React useEffect 依赖数组陷阱:为什么你的回调总是拿到旧 state
在 React 函数组件里用 useEffect 处理副作用时,依赖数组写错导致的闭包陈旧问题几乎每个项目都会踩一次。典型场景是定时器、WebSocket 消息回调、事件监听器里读取 state,发现拿到的永远是初始值;或者在 useEffect 里调用 setState 却触发了意料之外的重复执行。这类问题的根源不在 React 本身,而是 JavaScript 闭包捕获了渲染那一刻的变量引用,而依赖数组又没能让 effect 在变量变化时重新执行。下面从几个真实代码片段出发,拆解闭包陈旧的表现、形成条件...