首页 > 解决方案 > 为父母的孩子重新渲染逻辑,每秒更新多次

问题描述

所以我有一个组件,其状态由子元素每秒更新多次。

为了防止过度渲染,我在其他孩子上使用 shouldComponentUpdate 以确保他们不会重新渲染太多。

被更新的状态元素是树下一个孩子需要的。

我只想重新渲染那个子元素,而不是中间子元素,再次避免过度渲染。

怎么可能做到这一点?

标签: reactjs

解决方案


我只想重新渲染那个子元素,而不是中间子元素,再次避免过度渲染。怎么可能做到这一点?

您不能通过将状态作为道具传递的传统方法。如果不先触发子组件 B 的重新渲染,则父组件中的状态更改无法触发孙组件 C 的重新渲染。

对于更新子组件的组件,它需要经历其生命周期,然后才能将新道具传递给它。

据我所知,解决这个问题的唯一方法是使用状态管理库,例如 Redux 或 MobX,或者使用 React Context API 并将状态变量移动到那里,然后在您的孙子组件中“使用”它。

话虽这么说,除非您的树是多个级别的深度并且您没有看到任何性能问题,否则我会考虑shouldComponentUpdate()像您已经在做的那样继续使用。


推荐阅读