setState 在 setInterval 中不起作用 [重复]

Posted

技术标签:

【中文标题】setState 在 setInterval 中不起作用 [重复]【英文标题】:setState not working in setInterval [duplicate] 【发布时间】: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);
;

【问题讨论】:

检查这个。 ***.com/questions/47385492/… setState 是一种异步方法。这意味着在写完 setState 之后,你不能指望状态会立即改变 【参考方案1】:

FROM DOC :

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

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

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

【讨论】:

谢谢先生,它现在正在工作

以上是关于setState 在 setInterval 中不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

setState 在函数的简单 if 条件中不起作用

react中的setState在react组件中不起作用

ReactJS Array.push 函数在 setState 中不起作用

Setstate 在小部件列表中不起作用

在哪里调用 setInterval 反应

React Native(动画和 setState)