javascript - React中組件綁定this
問題描述
<button onClick={this.handleEvent}> //這里的this是toggle組件 為什么還需要在組件里綁定這個(gè)函數(shù)的this {this.state.isToggleOn === true ? ’on’ : ’off’}</button>
想不明白這里的this綁定
問題解答
回答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)前組件啦。
還有一種方便的寫法,就是用箭頭函數(shù)聲明:
handleEvent = (e)=>{}render(){ ...onClick={this.handleEvent}...}回答2:
因?yàn)閔andleEvent中this.setState...的this并沒有綁定this
可以采用箭頭函數(shù)的語法糖來綁定this
handleEvent = () => { this.setState...}
相關(guān)文章:
1. mysql - 記得以前在哪里看過一個(gè)估算時(shí)間的網(wǎng)站2. css3 - 純css實(shí)現(xiàn)點(diǎn)擊特效3. MySQL中的enum類型有什么優(yōu)點(diǎn)?4. javascript - 關(guān)于<a>元素與<input>元素的JS事件運(yùn)行問題5. javascript - vue 怎么渲染自定義組件6. python - 啟動(dòng)Eric6時(shí)報(bào)錯(cuò):’qscintilla_zh_CN’ could not be loaded7. mysql - 查詢字段做了索引為什么不起效,還有查詢一個(gè)月的時(shí)候數(shù)據(jù)都是全部出來的,如果分拆3次的話就沒問題,為什么呢。8. ID主鍵不是自增的嗎 為什么還要加null9. android下css3動(dòng)畫非常卡,GPU也不差啊10. css - 新手做響應(yīng)式布局, 斷點(diǎn)過后右側(cè)出現(xiàn)空白,求幫助,謝謝。
