【发布时间】:2018-10-24 10:45:20
【问题描述】:
我正在尝试以这种方式使用接收到的道具更新某些组件的状态:
componentWillReceiveProps(nextProps) {
if(nextProps.history.length <= 2) {
this.setState({
history: nextProps.history
});
}
}
问题在于,当父级传递长度大于 2 的历史时,状态仍在变化。有什么想法吗?
谢谢
【问题讨论】:
-
..当父级传递长度大于 2 的历史记录时,状态仍在变异。 -- 你确定状态更新仅来自这个@987654322 @钩子?
-
您还应该检查 nextProps 是否与 Props 不同。如果不是,则无需更新您的状态。
-
Arup - 是的,这是我组件状态唯一可能发生变化的地方...
-
一个codesandbox将在这里帮助调试
-
这是答案(我的朋友帮我解决了这个问题):当传递一些“大对象”(不是像整数或字符这样的原始对象)时,浏览器通过引用传递对象而不是复制它。那就是问题所在。所以解决方案是 - 如果您不想依赖于代码中其他地方所做的更改,请传递一个副本(无论是否深)
标签: javascript reactjs