事件處理函數(shù)的this指向問(wèn)題以及解決方案以及

1.bind,apply,call----為什么不能用apply、call綁定?

原因是:apply,call指向完之后立即執(zhí)行當(dāng)前函數(shù),bind是返回一個(gè)新的函數(shù)


2.區(qū)分普通函數(shù)與事件處理函數(shù)

1) 普通函數(shù)是直接調(diào)用的。不存在 this 指向問(wèn)題,誰(shuí)調(diào)用的,this 指向就是誰(shuí),并且沒(méi)有事件對(duì)象

2)事件處理函數(shù)其實(shí)也是一個(gè)函數(shù),只是他綁定在某個(gè)事件上,this默認(rèn)指向undefined(在嚴(yán)格模式下)


3.解決this指向的四種方法

1)直接在事件綁定的地方加上 .bind(this)

注意父組件render,子組件一定會(huì)render,所以該又會(huì)返回一個(gè)全新的函數(shù)

2)使用一個(gè)箭頭函數(shù)來(lái)作為事件處理函數(shù),然后在這個(gè)箭頭函數(shù)中再以普通方式去調(diào)用最終的函數(shù)

注意父組件render,子組件一定會(huì)render,所以該又會(huì)返回一個(gè)全新的箭頭函數(shù)

3)在構(gòu)造函數(shù)(constructor)中提前做?bind ---只初始化一次

4)使用?public?class?filed?新語(yǔ)法。并將函數(shù)寫(xiě)成箭頭函數(shù)的形式。

性能優(yōu)化:

1.?父組件render,子組件一定會(huì)render

為了節(jié)省性能,父組件render的時(shí)候,如果子組件沒(méi)有必要更新。那么不應(yīng)該讓子組件render

如何辦呢?

1.?自己使用?shouldComponentUpdate()?生命周期的鉤子函數(shù)

2.?不要寫(xiě)?shouldComponentUpdate?.而是讓組件繼承?一個(gè)?PureComponent?基礎(chǔ)組件

了解到這種性能優(yōu)化之后。

在子組件上傳遞函數(shù)時(shí)并且不攜帶參數(shù)時(shí),推薦使用哪幾種解決?this?指向問(wèn)題的方案(即上面的方法3,4)

1.?提供?構(gòu)造函數(shù)中?綁定

2.?public?class?filed?新語(yǔ)法的方式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容