场景:
一个父组件包含两个子组件,点击其中的一个组件进行相应的操作,但是在此时,这三个组件都会重新渲染(React组件的更新机制:React组件在默认情况下,父组件或兄弟组件触发更新后,会按照父组件、子组件的顺序重新渲染,并且即使子组件本身没有发生任何变化,也会重复触发更新。)
问题:
怎么能做到只让需要更新的组件更新?
解决:
memo:高阶组件(被调用时返回传入的组件)
如果你的组件在相同 props 的情况下渲染相同的结果,那么你可以通过将其包装在React.memo
中调用,以此通过记忆组件渲染结果的方式来提高组件的性能表现。这意味着在这种情况下,React 将跳过渲染组件的操作并直接复用最近一次渲染的结果
每次传入的组件要执行更新时,组件的新props和之前的老props会进行一次浅比较:结果相等,不触发更新,结果不相等,触发更新,重新渲染