useState 的狀態更新是異步的,別在同一事件裡連續拿舊值。
- 用函數式更新:setCount(c => c + 1)
- 副作用放 useEffect,記得清理
const [c, setC] = useState(0);
useEffect(() => {
const id = setInterval(() => setC((x) => x + 1), 1000);
return () => clearInterval(id);
}, []);
複雜狀態優先用 reducer,別堆 useState。