如何根据已记忆的父组件状态防止子组件中不必要的重新渲染

How to prevent unecessary rerenders in child components dependent on memoized parent component state

link to sandbox

App 具有计算记忆值的状态,该状态作为道具传递给 Options。当状态由于传递给 Option 的回调而改变时,App 被重新渲染,导致

  1. 重新渲染所有 Options
  2. SomeComponent 的重新渲染,它甚至不需要任何道具

我正在寻找一种使用 React 挂钩和状态管理的模式,它只允许重新呈现 Option 中的 2 个 - 取消选择的那个,因为它 isSelected 属性由真变假,被选中的那个,因为它的isSelected属性由假变真。我不明白为什么其他子组件,特别是 SomeComponent,在它们的 props 没有改变时需要重新渲染。

这通常是通过 React.memo 完成的,以使渲染的组件仅依赖于它们的 props 而不是 re-render,除非它们的 props 发生变化。

参见:https://reactjs.org/docs/react-api.html#reactmemo