【问题标题】:setState not working in setInterval [duplicate]setState 在 setInterval 中不起作用 [重复]
【发布时间】:2018-05-08 01:20:31
【问题描述】:

我正在尝试用setInterval 中的i 的值更新stateValue 的值,但它只更改i 的值并且不会更新setInterval 中的stateValue

fun1 = () => {
  let i = 0;
  let intervalId = setInterval(() => {
    console.log("i:", i);
    this.setState({
      stateValue: i
    });

    i = i + 1;
    if (i === 3) {
      i = 0;
    }
    console.log("stateValue:", this.state.stateValue);
  }, 5000);
};

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

FROM DOC :

setState() 并不总是立即更新组件。有可能 批处理或推迟更新。这使得阅读this.state 在致电setState() 之后,这是一个潜在的陷阱。相反,使用 componentDidUpdatesetState 回调 (setState(updater, callback)),其中任何一个都保证在更新后触发 已应用。如果需要根据前面的设置状态 状态,请阅读下面的 updater 参数。

您应该使用它来获取即时状态更新值:

this.setState({
    stateValue: i
},() => {
    console.log("stateValue:", this.state.stateValue);
});

【讨论】:

  • 谢谢先生,它现在正在工作
猜你喜欢
  • 2016-09-22
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多