鍍金池/ 問答/HTML/ react組件方法中的this問題

react組件方法中的this問題

1clipboard.png

2
clipboard.png

如上兩圖:在react組件中,已知其他環(huán)境都相同,僅僅是圖1多了一層箭頭函數(shù),問:為何在本組件的scroll方法中,圖1形式取到this是本組件,圖2形式this卻是undefined?

回答
編輯回答
糖果果

1.首先箭頭函數(shù)的this是靜態(tài)綁定的
2.要理解onScroll這種注冊的是事件回調(diào),也就是后面應該是個函數(shù),當croll事件觸發(fā)的時候執(zhí)行等號后面的函數(shù),第二種寫法就相當于你的scroll()在render的時候就被執(zhí)行了,而不是在事件觸發(fā)的時候,里面的this也不是undefined

2017年6月15日 06:07
編輯回答
不二心

這個問題得從class說起。
當定義React組件時,extends React.Component時,不會將this繼承下來。所以你的第二個圖是thisundefined.
而ES6中的arrow function呢,默認在定義的時候會綁定this。
使用this一般有兩種做法。

  • 直接使用箭頭函數(shù)
  • 在constructor中綁定。
class {
    constructor() {
        super(...arguments);
        this.myFunction = this.myFunction.bind(this);
    }
    
    render() {
        return(
            <div onClick={this.myFunction}></div>
        )
    }
    
    myFunction() {
        //
    }
}
2018年6月22日 21:55
編輯回答
有點壞

阮一峰的教程,看看吧
clipboard.png

2017年2月5日 15:12