一、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是否嚴格相等, 若嚴格相等,則不重新渲染組件,若不嚴格相等,則重新渲染組件, 參考資料: [1] shouldComponent.https://reactjs.bootcss.com/docs/react-component.html#shouldcomponentupdate.
[2] PureComponent.https://reactjs.bootcss.com/docs/react-api.html#reactpurecomponent.
[3] memo.https://reactjs.bootcss.com/docs/react-api.html#reactmemo.
[4] shouldComponentUpdate作用.https://reactjs.bootcss.com/docs/optimizing-performance.html#shouldcomponentupdate-in-action.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/127983.html
標籤:JavaScript
