2017-04-03 66 views
0

我有一个表格组件,包含项目列表。 通过更改列表中的项目,我发现整个表格都是重新渲染的。 我试图把shouldComponentUpdate,并通过返回false我看到行组件不会重新渲染。 我是否必须重新提交父母以便重新展开子组件?React是否必须重新提交父母才能让孩子重生?

+0

UI中的重新渲染与正在调用的渲染方法不同。父母是哪一个?它可以是“渲染”,但如果没有差异,则实际上不会进行DOM更改。 –

+0

子组件受到父组件传递的数据的影响。好奇。为什么你必须防止你的父母组件重新渲染? –

回答

0

https://facebook.github.io/react/docs/react-component.html#shouldcomponentupdate

返回false并不阻止子组件的重新渲染时,他们的状态变化。

如果孩子中的数据作为父母的属性传递,那么是的,您必须重新提交父母以重新展示孩子。其原因是,如果你的孩子依赖道具,并且父母不渲染,那么这些道具永远不会改变,因为只有在父母根据自己的状态呈现并给予新的道具时它才会接收到变化的道具或道具。我怀疑这是你的问题。重新渲染父项通常不是React中的性能问题。

如果孩子们有自己的状态正在改变,那么不会重新渲染父母就没问题。如果你使用的是一个状态容器,另一种选择是让孩子直接进入状态,然后在状态容器更新相关状态时更新他们的道具,但这超出了这个问题的范围。

一般来说,最好不要使用shouldComponentUpdate,除非性能要求它,然后只有非常仔细的考虑。

相关问题