Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否应更新组件和子组件_Javascript_Reactjs - Fatal编程技术网

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、宽度和高度运行任何计算。为什么你知道不必这样做时重新计算?