所以我有一个组件,该组件的状态由一个子元素每秒更新多次。
为防止过度渲染,我在其他子项上使用了shouldComponentUpdate,以确保它们不会过度渲染。
树的下一个子节点需要更新状态的元素。
我只希望重新渲染该子元素,而不希望中间孩子再次渲染,以免过度渲染。
那怎么办?
答案 0 :(得分:1)
我只希望重新渲染该子元素,而不希望中间孩子再次渲染,以避免过度渲染。怎么会这样呢?
您不能通过将状态传递为道具的传统方法。父组件中状态的更改无法在不首先在子组件B上触发重新渲染的情况下触发对子组件C的重新渲染。
对于要更新子代的组件,它需要经历其生命周期,然后才能向其传递新的道具。
据我所知,解决此问题的唯一方法是使用状态管理库(例如Redux或MobX),或使用React Context API并将状态变量移到那里,然后将其“消费”到您的子级组件中
话虽这么说,除非您的树深了多个层次并且没有看到任何性能问题,否则我会考虑像您已经在使用的那样继续使用shouldComponentUpdate()
。