【问题标题】:ReactJS componentDidUpdate() prevState equals to currentStateReactJS componentDidUpdate() prevState 等于 currentState
【发布时间】:2019-11-12 10:00:09
【问题描述】:

在 S.O. 上发布了一个问题。已经有相同的标题,但我被困在不同的部分。

我正在设置我的状态:

  var index = this.state.rectangles.indexOf(eachRect);
  const newRects = [...this.state.rectangles];
  newRects[index].x = event.target.x();
  newRects[index].y = event.target.y();
  this.setState({ rectangles: newRects });

据我所知,执行const newRects = [...this.state.rectangles] 是创建一个不同的对象,而不是指向同一个引用(这是另一个 S.O 问题的错误,因此我的 prevState 和 this.state 之间存在区别。 但是,在 componentDidUpdate() 中记录 prevState 和 this.state 仍然返回 true。

我也尝试过设置状态:

  this.setState(prevState => {
                          console.log(prevState.rectangles[index]);
                          let oldRects = [...prevState.rectangles];
                          oldRects[index].x = event.target.x();
                          oldRects[index].y = event.target.y();
                          console.log("new rects: ", oldRects);
                          return { rectangles: oldRects };
                        });

也不行。

【问题讨论】:

标签: reactjs


【解决方案1】:

setState 不同步!如果您想确保在记录状态之前更新状态,只需使用第二个参数,它会在状态更新完成时提供回调。

this.setState({item: newItem},() => console.log(this.state.item))

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 2019-04-27
    • 2022-11-17
    • 1970-01-01
    • 2020-11-10
    • 2022-12-04
    • 2019-02-11
    • 2023-01-16
    • 1970-01-01
    相关资源
    最近更新 更多