javascript - React中組件綁定this
問(wèn)題描述
<button onClick={this.handleEvent}> //這里的this是toggle組件 為什么還需要在組件里綁定這個(gè)函數(shù)的this {this.state.isToggleOn === true ? ’on’ : ’off’}</button>
想不明白這里的this綁定
問(wèn)題解答
回答1:因?yàn)樵赾lass中聲明函數(shù),并不會(huì)自動(dòng)綁定this對(duì)象
所以,你在onClick={this.handleEvent}的時(shí)候,分解成兩步你就懂了:
let handleEvent = this.handleEvent;...onClick={handleEvent}...
所以,onClick調(diào)用的時(shí)候,handleEvent中的this會(huì)是undefined(根據(jù)文檔)
所以,你需要bind一下, 那么里面的this就是當(dāng)前組件啦。
還有一種方便的寫(xiě)法,就是用箭頭函數(shù)聲明:
handleEvent = (e)=>{}render(){ ...onClick={this.handleEvent}...}回答2:
因?yàn)閔andleEvent中this.setState...的this并沒(méi)有綁定this
可以采用箭頭函數(shù)的語(yǔ)法糖來(lái)綁定this
handleEvent = () => { this.setState...}
相關(guān)文章:
1. css3 - [CSS] 動(dòng)畫(huà)效果 3D翻轉(zhuǎn)bug2. python小白的基礎(chǔ)問(wèn)題 關(guān)于while循環(huán)的嵌套3. MySQL客戶(hù)端吃掉了SQL注解?4. javascript - JS設(shè)置Video視頻對(duì)象的currentTime時(shí)出現(xiàn)了問(wèn)題,IE,Edge,火狐,都可以設(shè)置,反而chrom卻...5. 求大神幫我看看是哪里寫(xiě)錯(cuò)了 感謝細(xì)心解答6. javascript - 百度echarts series數(shù)據(jù)更新問(wèn)題7. python - Django分頁(yè)和查詢(xún)參數(shù)的問(wèn)題8. javascript - 圖片能在網(wǎng)站顯示,但控制臺(tái)仍舊報(bào)錯(cuò)403 (Forbidden)9. php自學(xué)從哪里開(kāi)始?10. phpstady在win10上運(yùn)行
