Javascript 是否应更新组件和子组件
我有两个包装器组件,可以动态计算它们需要的大小和位置。通常这在Javascript 是否应更新组件和子组件,javascript,reactjs,Javascript,Reactjs,我有两个包装器组件,可以动态计算它们需要的大小和位置。通常这在shouldComponentUpdate中非常有效,但一旦我在这些组件中添加子组件,我就不能再使用此方法。为什么?因为如果我为需要更新的包装返回'false'。。。孩子们自己永远不会得到更新:( 示例JSX: 有什么好办法吗?我唯一的想法是添加一个新方法shouldUpdateChildren,如下面这个问题所述:您可能需要在shouldComponentUpdate中添加以下内容: this.props.children!==
shouldComponentUpdate
中非常有效,但一旦我在这些组件中添加子组件,我就不能再使用此方法。为什么?因为如果我为需要更新的包装返回'false'。。。孩子们自己永远不会得到更新:(
示例JSX:
有什么好办法吗?我唯一的想法是添加一个新方法shouldUpdateChildren,如下面这个问题所述:您可能需要在shouldComponentUpdate中添加以下内容:
this.props.children!==prevProps.children//根据下面的线程
this.props.children!==nextrops.children//据我所知
这里有一个有趣的线索:
我真想知道为什么Dan称它为prevProps
。据我所知,ComponentUpdate是否应该接收nextrops
、nextState
和nextContext
。至少在React-Native中是这样。这与常规React不同吗
编辑:
我读了你的链接,我想我现在更了解你的情况了
我有一个类似的例子,在父组件中有一个本地calcParams()
-函数,不需要为每个子更新调用该函数
我只需在calcParams
的开头做一个检查,看看是否有任何会影响计算的道具被更改。我将计算结果存储在this.calculatedParams
中,即不在this.state中。calculatedParams
作为this.state只能通过setState()设置
我将在上面留下我的原始答案,因为它有点相关。你能显示你正在使用的逻辑代码吗?为什么你需要在
shouldComponentUpdate
中返回false
?仅仅是因为没有必要对组件的x、y、宽度和高度运行任何计算。为什么你知道不必这样做时重新计算?