setState在setInterval中不起作用

时间:2017-11-24 04:13:50

标签: javascript reactjs

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

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);
};

1 个答案:

答案 0 :(得分:3)

<强> FROM DOC :

  

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

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

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