shouldComponentUpdate和子组件

时间:2015-11-17 00:19:56

标签: javascript reactjs

我有几个包装组件可以动态计算它们需要的大小和位置。通常这对Directory.EnumerateFiles(ImagesPath, "*.png") 起作用并且表现很好,但是只要我在这些组件中添加子项,我就不能再使用这种方法了。为什么?因为如果我为需要更新的包装器返回'false'...孩子们永远不会自己更新:(

JSX示例:

shouldComponentUpdate

这有什么好办法吗?我只有想法就是添加一个新方法shouldUpdateChildren,就像其他问题一样详细:https://discuss.reactjs.org/t/shouldcomponentupdate-and-children/2055

1 个答案:

答案 0 :(得分:0)

您可能需要将以下内容添加到youd shoudComponentUpdate:

this.props.children !== prevProps.children //according to below the thread

this.props.children !== nextProps.children //according to me

这是一个有趣的线程: https://github.com/facebook/react/issues/12185#issuecomment-364531032

我确实想知道为什么Dan称之为prevProps。据我所知,shouldComponentUpdate会收到nextPropsnextStatenextContext。至少在React Native中。这在常规的React中是不同的吗?

修改

我读了你的链接帖子,我想我现在更了解你的情况。

我有一个类似的情况,我在父组件中有一个本地calcParams() - 函数,不需要为每个子更新调用它。

我只是在calcParams的开头检查,看看是否有任何影响计算的道具发生了变化。我将计算结果存储在this.calculatedParams中,即不存储在this.state.calculatedParams中,因为this.state只能通过setState()设置。

我会在上面留下原来的答案,因为它有点相关。