react中的this指向?

import React, { Component } from "react";

class App extends Component {

handleClick(e, arg) {

console.log(e, arg);

}

render() {

this.handleClick();

// 通過bind方法實現,可以傳遞參數

return &


其實最基本的規則一直都沒有變,通過兩個關鍵點看this的指向:

this出現在哪個由function關鍵字聲明的函數里(即非箭頭函數,可以理解為箭頭函數里的this為一個正常變數)

該函數被誰,以何種方式(指call/apply、還是直接調用、還是把函數當成某個對象的屬性調用)調用,調用時傳入的的參數是啥:

  1. obj.f
  2. f.call/bind(obj)
  3. f()

實際上被誰調用其實並不重要,最重要的是被如何調用

第一個this.handleClick()的this出現在render函數里,所以得看render會如何調用,很明顯render是被React調用的,所以這取決於React的設置了,明顯React會把this設置為組件實例,完。

後面jsx里的onClick={this.handleClick}如果寫成這樣的話,你要知道this.handleClick傳給了button組件後是丟失了this了的!如下:

var obj = {
f: function(){
console.log(this)
}
}

function foo(f) {
f()
}
foo(obj.f)

上面的代碼中,foo運行時接收到的參數f時,foo是並不知道f是obj的屬性的,也就是常說的丟失了上下文。

而&

react中出現的"hydrate"這個單詞到底是什麼意思?
如何看待 BrendanEich、Vjeux 等人就 React Native 的討論?
這些手機銷售前端頁面用了哪些技術?
JS 中 var add=function(){} add(a)(b)(c); 是什麼簡寫?
匿名函數的this指向為什麼是window?

TAG:前端開發 | 前端框架 | React |