繁体   English   中英

当前和下一个道具在componentWillReceiveProps调用中相同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM