React useEffect 中闭包捕获旧值导致定时器逻辑错误的排查与修复
在 React 函数组件里用 useEffect 管理定时器、事件监听或异步请求时,很容易遇到「闭包捕获了旧 state」的问题。典型场景是 setInterval 里读取的 count 永远停在初始值,或者窗口 resize 回调里拿到的宽度不是最新的。原因是每次渲染都会生成新的闭包,而 effect 只在依赖变化时重新执行,旧闭包里引用的变量被冻结在创建那一刻。如果依赖数组漏写、或者用空依赖只跑一次,定时器回调就会一直用旧值。这类 bug 往往不报错,只是逻辑悄悄偏离预期,调试时容易误判为状态没更新。下...