Javascript setState未在setInterval中工作
我试图用Javascript setState未在setInterval中工作,javascript,reactjs,Javascript,Reactjs,我试图用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)
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);
};
setState()
并不总是立即更新组件。可能
批处理或将更新推迟到以后。这使得读取成为这种状态
在调用setState()
之后,这可能是一个陷阱。相反,使用
componentdiddupdate
或setState
回调(setState(更新程序、,
回调)
),其中任何一个都保证在更新后启动
已应用。如果需要根据上一个设置设置状态
状态,阅读下面的更新程序
参数
您应该使用此选项获取IMMIDATE状态更新值:
this.setState({
stateValue: i
},() => {
console.log("stateValue:", this.state.stateValue);
});
看看这个。setState是一种异步方法。这意味着,在编写setState之后,您不能期望状态立即发生更改,先生,如果您现在工作的话