我使用
创建了一个状态变量const [drawing, setDrawing] = useState(false)
然后我有这个按钮,它应该更新 drawing
<button onClick={() => toggleDrawing}>Toggle Drawing</button>
toggleDrawing 函数是:
const toggleDrawing = () => {
setDrawing(true)
}
但是当我按下按钮和 console.log 时,drawing
id 的值没有更新,它总是落后一步。它以 false
的值开始,单击一次后仍为 false
,第二次单击后它切换为 true
。
答案 0 :(得分:0)
const toggleDrawing = () => {
setDrawing((oldValue) => !oldValue)
}
如果你想在 React 中切换状态,你总是想参考之前的状态
答案 1 :(得分:0)
const [drawing, setDrawing] = useState(false)
const toggleDrawing = () => {
setDrawing(!drawing);
}
<button onClick={toggleDrawing}>Toggle Drawing</button>
const toggleDrawing = () => {
setDrawing(true);
}
<button onClick={toggleDrawing}>Toggle Drawing</button>
沙盒https://codesandbox.io/s/vigilant-meadow-thdni?file=/src/App.js
注意 =>toggleDrawing 函数中的 console.log(drawing) 首先会返回 false,然后真正的原因是状态没有更新
答案 2 :(得分:0)
您只是返回 toggleDrawing
函数而不执行它
当点击事件这样发生时执行函数
<button onClick={() => toggleDrawing()}>Toggle Drawing</button>
或者将 toggleDrawing
作为实际函数传递给 onClick
<button onClick={toggleDrawing}>Toggle Drawing</button>