React組件渲染觸發的條件-歸納總結


一、React組件何時發生渲染——何時會生成React元素?
React組件的渲染發生在兩個階段。
1. 組件掛載。
2. 組件更新。
二、React組件更新的觸發條件是什么?
沒有實現shouldComponentUpdate方法的繼承自Component的class組件來說:①父組件更新或者②該組件調用setState方法后,該組件會更新。
function組件來說:①父組件更新之后,該組件會更新。
 
當使用 繼承自PureComponent的class組件使用memo來包裝的function組件時,
組件更新與否的判斷條件是——比較前后兩次props和state的屬性值是否嚴格相等?若是嚴格相等,則組件不會重新渲染。若不是嚴格相等,則會重新渲染,生成新的React元素。
 
編寫了shouldComponent的class組件或使用 傳入areEqual函數的memo函數所包裝的function組件上的更新觸發條件是什么樣的呢?
shouldComponentUpdate(props, state) 返回true則重新渲染組件。(在該函數中,你可以得到props和state變化前后的值。)
areEqual(prevProps, nextProps) 返回false則重新渲染組件。(在該函數中,你可得到props變化前后的值。)
 
另外, 使用hook之后的function組件的更新情況需要額外注意。當hook生成的state發生改變時,function組件是否更新的條件是——前后兩次的state是否嚴格相等。
若嚴格相等,則不重新渲染組件,若不嚴格相等,則重新渲染組件。
 
參考資料:
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM