【发布时间】:2020-03-24 19:23:17
【问题描述】:
这是写的代码
function App() {
const [number, setNumber] = useState(1);
const mapper = {
1: 'One',
2: 'two',
3: 'three'
}
const setFirst = () => {
setNumber(1);
console.log(number);
console.log(mapper[number]);
}
const setSecond = () => {
setNumber(2);
console.log(number);
console.log(mapper[number]);
}
const setThird = () => {
setNumber(3);
console.log(number);
console.log(mapper[number]);
}
return (
<div>
<button onClick={() => { setFirst(); }}>One</button>
<button onClick={() => { setSecond() }} >Two</button>
<button onClick={() => { setThird(); }} >Three</button>
</div>
);
}
预期:
点击setFirst(),数字应设置为1。
点击setSecond(),数字应设置为2。
点击setThird(),数字应设置为3。
发生了什么
按顺序点击
setFirst() -> setSecond() -> setThird()
以重复的方式
输出:
1
One
1
One
2
Two
3
Three
1
One
预期输出:
1
One
2
Two
3
Three
1
One
2
Two
有人可以帮我解决这个问题吗?我需要帮助找出错误所在。
【问题讨论】:
-
状态更新是异步的。在console.log之前状态还没来得及更新
-
@Chris console.log() 只是一个例子。如果我想使用该值做某事,我应该在 then() 块内还是在 useEffect() 中做
-
使用
useEffect
标签: javascript reactjs react-hooks