当前位置: 首页 > 知识库问答 >
问题:

setState未在setInterval中工作[重复]

曹子平
2023-03-14

我试图更新stateValue的值与setInterval中的i的值,但它只更改i的值,而不更新setInterval<中的stateValue/code>。

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个答案

国晟睿
2023-03-14

从文件:

setState()并不总是立即更新组件。它可以批处理更新或将更新推迟到以后。这使得调用setState()后立即读取This.state成为一个潜在的陷阱。相反,使用componentdiddupdatesetState回调(setState(updater,callback)),这两种回调都保证在应用更新后触发。如果需要基于上一个状态设置状态,请阅读下面的updater参数。

您应该使用此选项获取IMMIDATE状态更新值:

this.setState({
    stateValue: i
},() => {
    console.log("stateValue:", this.state.stateValue);
});
 类似资料:
  • 我是React中的一个noob,正在尝试为水相制作一个简单的应用程序,用户输入一个数字,然后根据数值显示水的状态,例如,如果他输入212,它应该是气体,12应该是固体,但由于某些原因,它没有正确显示数值,非常感谢任何帮助!!!

  • 我正在使用Android Studio开发一个应用程序,目标API级别为22,使用compileSdkVersion级别为23。当我试图在下面的代码中实现时,它给出了 不推荐使用setOnPageChangeListener。 我想对做的是:

  • 我有些状态 当我尝试更新嵌套属性,如时,我调用如下所示 然而,这只是将状态替换为 我就失去了其他财产

  • 我使用的是一个omnifaces o:tree of“Branchs”,其中每个分支都有一个属性为“color”的“叶列表”,该属性在树中应该是可编辑的。 添加/删除分支和向任何分支添加叶效果良好,符合预期。此外,任何复杂树(包括所有叶列表)的渲染(显示具有正确值的颜色属性)的工作方式与charme类似。 但是更改颜色或删除叶子(因此中的任何内容)只对最后渲染的分支起预期作用。 其他叶/分支的“颜

  • 问题内容: 之间的主要区别是什么 setInterval 和 setTimeout 在JavaScript中? 问题答案: 超时后运行一次代码/函数。 以一定的间隔运行代码/函数,并在它们之间超时。 例: