首页 > 解决方案 > 当父级运行 setState 时避免子级重新渲染

问题描述

l 大家好,问题来了。

我们有一个启用了一些过滤的网格组件。应用过滤时,如果存在某个回调属性,则以过滤后的数据作为参数调用它。

问题是这样的。如果所述数据网格被父组件包裹并且父组件将过滤后的数据保存在其状态中,则它会导致父组件以及数据网格重新呈现。但是,当数据网格呈现它时,它会运行它的过滤逻辑,这会导致回调(即setState()调用)运行。

因此,为了避免循环,我向父组件类引入了一个变量并将数据保存在那里,但对我来说似乎不太好。

另一种选择是 redux,只需添加一个新操作并在过滤运行时调度它。

还有其他想法吗?

标签: javascriptreactjsredux

解决方案


由于您还要求其他想法,我可以建议 React hooks。它们允许更细粒度的控制,例如多状态、reducers记忆回调仅在输入更改时调用的效果等。


推荐阅读