我知道如果在函数内使用 useEffect 会出错。但是,如果我想在函数内部或在满足某些条件之后更新状态变量,并同时更新 DOM 或其在 DOM 上看到的值。这样做的最佳方法是什么?
示例代码:
const handleClick = () => {
const newDiff = (Date.now() - startTime);
console.log('newDiff: ' + newDiff)
setDiff(newDiff);
console.log('diff: ' + diff)
setDiffArray(oldArray => [...oldArray, newDiff]);
console.log("diffArray: " + diffArray)
if (newDiff !== undefined) {
if (diffArray !== undefined && diffArray.length >= 5){
gameReset();
}
console.log(diffArray);
}
setStartTime(Date.now());
respawn();
console.log(diffArray);
}
为了给你一些上下文,newDiff
在点击一个 div 后立即生成,在它使用 setDiffArray
设置为状态后立即生成,毕竟我尝试将它呈现为 <div>
计算完成,但状态仍然滞后于渲染,因此最后一个 div 不会被记录并保存到数组中。
如果我尝试使用 useEffect,我会收到一个错误,提示我无法在函数内部使用它。