用React寫函數(shù)組件,如何避免重復(fù)渲染?
?
?
這是react埋的坑,它埋的坑多的數(shù)不勝數(shù),有的時(shí)候真覺得垃圾。
React組件重建vdom取決于兩個因素 props和state。你這種情況是說,props接收不受你控制,其他人也不管性能問題,胡寫瞎寫。說來說去,都是react官方埋的坑。
針對你上述具體問題,你可以在你的組件外面套一個React.memo,它有第二個參數(shù),用來決定你傳入的props是否變化,具體用法看官方文檔。判斷的時(shí)候,你直接忽略onClick,因?yàn)榇蟛糠謭鼍跋禄卣{(diào)函數(shù)都不會發(fā)生變化,誰會設(shè)計(jì)根據(jù)一個回調(diào)函數(shù)來重新渲染界面呢?除非要把函數(shù)的字符串顯示在界面上……這種場景沒見過。
基于這個想法,我們還可以基于React.memo封裝一個高階函數(shù),所有函數(shù)組件都用這個高階函數(shù)包裝。再定個規(guī)矩,所有以on開頭的回調(diào)函數(shù)傳給組件,只接收一次,后續(xù)你換個函數(shù)給我我都不理會,也不會重新觸發(fā)渲染。在高階函數(shù)里面實(shí)現(xiàn)這個邏輯。
作者:否子戈
鏈接:https://www.zhihu.com/question/442368205/answer/1711027669
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
本文摘自 :https://www.cnblogs.com/