【问题标题】:prevProps.xx and this.props.xx always same, even when xx changesprevProps.xx 和 this.props.xx 始终相同,即使 xx 发生变化
【发布时间】:2020-05-24 15:07:55
【问题描述】:

我在 reactjs 16.10 中有一个非常奇怪的错误

具有两个组件的简单反应应用程序 A和B。 A 组件包含 B 组件并将其状态值之一传递给它。

    <ModalBody> 
     <B {...this.props} xx={this.state.xx}  />
 </ModalBody>

在组件 B 中,我试图比较内部的属性

componentDidUpdate(prevProps, prevState, 快照)

但问题是它们总是相同的.. 最初它们是未定义的,一旦从父级设置了 prop,它们都是相同的,所以

if( prevProps.xx!=this.props.xx)

总是失败..

P.S 我不直接改变状态,所以这不是问题.. 属性从父级正确设置..

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    这是一个模糊的示例答案,但我的猜测是因为即使内部组件 B 状态更新并且道具没有改变但状态发生了变化,componentDidUpdate 也会被调用,prevProps 当然与 this.props 相同,因为 componentDidUpdate 不是由 prop 更改触发的。

    检查您的状态更新。

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 2020-04-15
      相关资源
      最近更新 更多