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()
之后,这是一个潜在的陷阱。相反,使用componentDidUpdate
或setState
回调 (setState(updater, callback)
),其中任何一个都保证在更新后触发 已应用。如果需要根据前面的设置状态 状态,请阅读下面的updater
参数。
您应该使用它来获取即时状态更新值:
this.setState(
stateValue: i
,() =>
console.log("stateValue:", this.state.stateValue);
);
【讨论】:
谢谢先生,它现在正在工作以上是关于setState 在 setInterval 中不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章