我正在尝试使用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);
};
答案 0 :(得分:3)
<强> FROM DOC : 强>
setState()
并不总是立即更新组件。有可能 批量或推迟更新,直到稍后。这使得阅读this.state
在致电setState()
潜在的陷阱之后。相反,使用componentDidUpdate
或setState
回调(setState(updater, callback)
),其中任何一个都保证在更新后触发 已经应用。如果需要根据以前的状态设置状态 状态,请阅读下面的updater
参数。
您应该使用它来获取immidiate状态更新值:
this.setState({
stateValue: i
},() => {
console.log("stateValue:", this.state.stateValue);
});