我有几个包装组件可以动态计算它们需要的大小和位置。通常这对Directory.EnumerateFiles(ImagesPath, "*.png")
起作用并且表现很好,但是只要我在这些组件中添加子项,我就不能再使用这种方法了。为什么?因为如果我为需要更新的包装器返回'false'...孩子们永远不会自己更新:(
JSX示例:
shouldComponentUpdate
这有什么好办法吗?我只有想法就是添加一个新方法shouldUpdateChildren,就像其他问题一样详细:https://discuss.reactjs.org/t/shouldcomponentupdate-and-children/2055
答案 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会收到nextProps
,nextState
和nextContext
。至少在React Native中。这在常规的React中是不同的吗?
修改强>
我读了你的链接帖子,我想我现在更了解你的情况。
我有一个类似的情况,我在父组件中有一个本地calcParams()
- 函数,不需要为每个子更新调用它。
我只是在calcParams
的开头检查,看看是否有任何影响计算的道具发生了变化。我将计算结果存储在this.calculatedParams
中,即不存储在this.state.calculatedParams
中,因为this.state只能通过setState()设置。
我会在上面留下原来的答案,因为它有点相关。