本文只討論函數式組件,由於React再也不建議使用class component。html
當Parent re-render時,Child也會re-render,除非如下2種狀況之一發生:api
<Child/>
這個jsx element對象與上次渲染時相同(同一個對象引用)。Child組件被React.memo裝飾,而且傳給Child組件的props與上次渲染相同。緩存
React.memo
幫咱們返回了上次渲染時使用的<Child/>
jsx element對象。性能優化小竅門:性能優化
使用React.usememo來緩存計算結果、或者jsx element。它有2個方面的做用:ide
<Child/>
這個jsx element對象與上次渲染是同一個對象,那麼Child就不會被從新渲染(它的render函數不會被調用)。所以,Parent可使用React.usememo來拿到上次渲染時使用的<Child/>
jsx element對象,避免它從新渲染。