在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ react組件方法中的this問(wèn)題

react組件方法中的this問(wèn)題

1clipboard.png

2
clipboard.png

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

回答
編輯回答
糖果果

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

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

這個(gè)問(wèn)題得從class說(shuō)起。
當(dāng)定義React組件時(shí),extends React.Component時(shí),不會(huì)將this繼承下來(lái)。所以你的第二個(gè)圖是thisundefined.
而ES6中的arrow function呢,默認(rèn)在定義的時(shí)候會(huì)綁定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
編輯回答
有點(diǎn)壞

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

2017年2月5日 15:12