在componentWillReceiveProps调用中,当前和下一个props是相同的

时间:2017-12-05 17:46:28

标签: javascript reactjs redux

我正在更新我的redux存储变量并将它们作为道具传递给组件,但在这段代码中,当前和下一个道具是相同的,当我通过外部调度更改它们时,它们等于新的道具。

componentWillReceiveProps (nextProps) {
    console.log(this.props.data);
    console.log(nextProps.data);
}

为什么会这样?如果通过发送更改,它们应该完全不同吗?

2 个答案:

答案 0 :(得分:3)

根据官方docs

  

请注意,即使道具没有,也可以调用此方法   已更改,因此请务必比较当前值和下一个值   只想处理变化。 父组件可能会发生这种情况   导致您的组件重新渲染

所以你应该看到至少一组不同的道具(实际的变化),但不一定在每个日志上。

答案 1 :(得分:1)

我找到了问题的核心。

我用它来克隆我在reducer中的当前状态:

export const cloneDeep = (state) => ({...state});

这似乎正在改变现状。 我用这个替换了它:

export const cloneDeep = (state) => JSON.parse(JSON.stringify(state));

如果更改了当前状态和当前道具的任何更改都不等于nextProps。