本文只讨论函数式组件,由于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对象,避免它从新渲染。