是否可以优化 redux 对原子状态变化的过度渲染?

Is it possible to optimize redux excessive renderings on atomic state changes?

我正在开发一个复杂的 react/redux/@reduxjs/toolkit 应用程序,它有许多嵌套(彼此)反应功能组件(我正在使用钩子和我我是 redux 的新手)

我注意到 smallest/atomic 数据更新时这些嵌套组件的渲染过多。 例如,我有一个网格,其中有许多列和行。网格模型(数据) 是每一行的一种数组:

[
 {rowId:'001', values:{col1Id:val1, col2Id:val2, col3Id:val3}},
 {rowId:'002', values:{col1Id:val4, col2Id:val5, col3Id:val6}}
]

当我更新我的一个网格单元格值时,整个网格组件因此渲染了很多次!我正在使用的网格是第三方组件,在使用时需要更高的稳定性。由于这些多重渲染,我现在遇到了一些功能问题。

为了更好地理解 redux 行为,我做了 this codesandbox (which is based on the @reduxjs/toolkit's todo example)

编辑待办事项标签时,我还注意到整个 TodoList 也被渲染(请参阅 this screenshot 中控制台上的日志)

在我的应用程序中,我尝试使用反应 memo 钩子来减少我的网格组件的渲染次数(与 shouldComponentUpdate 反应生命周期方法相同)但它不起作用因为我的应用程序中的整个雇佣关系似乎也被渲染了(它的父级也被重新渲染)

我想知道为什么不只渲染相关组件(如果只渲染网格而不渲染其任何祖先,memo 将起作用)。如果只有一个单元格值发生变化,为什么至少只有网格组件呈现而没有其他内容?!有没有办法优化这些渲染?

是的,通过分别存储 id 数组(呈现 TodoList 和实际值(ListItem 需要)。

教程章节 Performance and Normalizing Data 深入探讨了该主题。