如果我写
function Component() {
const [isLoading, setLoading] = useState(true);
const request = () => {
setLoading(true)
console.log(isLoading)
setLoading(false)
console.log(isLoading)
}
}
它将两次注销“ true”。为什么控制台中的状态没有更新?即使它在DOM中也能正常工作。
this.setState({ ...}
将显示新的状态值
答案 0 :(得分:3)
使用setState
或useState
挂钩将新值设置为状态是一个异步过程。
如果要在更改后记录新值,则必须将其与useEffect
钩子配对
useEffect(() => {
console.log(isLoading)
}, [isLoading]);
答案 1 :(得分:0)
Arnaud的回答是100%正确的,但是当我玩这些东西时,令我感到困惑的是两次调用setState
的效果与更新后直接尝试console.log
的效果不同。 / p>
这是因为React在内部处理状态更新的方式,即使您的日志可能有误,您的状态实际上也已正确更新。