[英]Current and next props are the same in componentWillReceiveProps call
我正在更新我的redux存储变量,并将它们作为道具传递给组件,但是在这段代码中,当前道具和下一个道具都是相同的,当我通过外部分配来更改它们时,它们等于新道具。
componentWillReceiveProps (nextProps) {
console.log(this.props.data);
console.log(nextProps.data);
}
为什么会这样呢? 如果通过调度进行更改,它们是否应该完全不同?
根据官方文档 :
请注意, 即使道具没有更改 , React也会调用此方法 ,因此如果您只想处理更改,请确保比较当前值和下一个值。 当父组件导致您的组件重新渲染时,可能会发生这种情况 。
因此,您应该至少看到一组不同的道具(实际更改),但不一定在每个日志上。
我找到了问题的核心。
我用它来克隆我在reducer中的当前状态:
export const cloneDeep = (state) => ({...state});
这似乎正在改变当前状态。 我用这个替换了它:
export const cloneDeep = (state) => JSON.parse(JSON.stringify(state));
不会对当前状态做任何更改,并且如果更改,当前道具现在不等于nextProps。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.