useEffect

使用?useEffect?完成副作用操作。賦值給?useEffect?的函數(shù)會在組件渲染到屏幕之后執(zhí)行。

在函數(shù)組件主體內(nèi)(這里指在 React 渲染階段)改變 DOM、添加訂閱、設(shè)置定時器、記錄日志以及執(zhí)行其他包含副作用的操作都是不被允許的,因為這可能會產(chǎn)生莫名其妙的 bug 并破壞 UI 的一致性。

清除 effect:通常,組件卸載時需要清除 effect 創(chuàng)建的諸如訂閱或計時器 ID 等資源。要實現(xiàn)這一點,useEffect?函數(shù)需返回一個清除函數(shù)。

effect 的執(zhí)行時機(jī):在瀏覽器完成布局與繪制之后,傳給?useEffect?的函數(shù)會延遲調(diào)用。

effect 的條件執(zhí)行:

? ??默認(rèn)情況下,effect 會在每輪組件渲染完成后執(zhí)行。這樣的話,一旦 effect 的依賴發(fā)生變化,它就會被重新創(chuàng)建。

? ??可以給?useEffect?傳遞第二個參數(shù),它是 effect 所依賴的值數(shù)組。只有當(dāng)所依賴的值數(shù)組改變后才會重新創(chuàng)建。如果你要使用此優(yōu)化方式,請確保數(shù)組中包含了所有外部作用域中會發(fā)生變化且在 effect 中使用的變量,否則你的代碼會引用到先前渲染中的舊變量。

? ??如果想執(zhí)行只運(yùn)行一次的 effect(僅在組件掛載和卸載時執(zhí)行),可以傳遞一個空數(shù)組([])作為第二個參數(shù)。

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

相關(guān)閱讀更多精彩內(nèi)容

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