const [value, setValue] = useState(0); const [array, setArray] = useState([1, 2]); const handleKeyDown = (event) => { setValue(3); setArray([...array, value]); };
这里我希望新的数组是[1,2,3]相反,我得到[1,2,0]我现在知道为什么会发生这种情况,但有没有什么好的方法来解决它呢?
0tdrvxhp1#
value直到下一次重新渲染时才会更新为3,因此在调用setArray时它仍然是初始值(0)。您应该将所需的值赋给一个常规变量,然后将其用于两个变量。
value
setArray
0
const handleKeyDown = (event) => { const newValue = 3; setValue(newValue); setArray([...array, newValue]); };
yh2wf1be2#
这里问题是值还没有更新,它将变为“3”,但是在下一次渲染中,您可以简单地将值直接添加到数组中:
setValue(3); // if you need to update value for the next render setArray([...array, 3]);
2条答案
按热度按时间0tdrvxhp1#
value
直到下一次重新渲染时才会更新为3,因此在调用setArray
时它仍然是初始值(0
)。您应该将所需的值赋给一个常规变量,然后将其用于两个变量。yh2wf1be2#
这里问题是值还没有更新,它将变为“3”,但是在下一次渲染中,您可以简单地将值直接添加到数组中: