React 中 useEffect 依赖数组引发的无限重渲染:从一次线上调试说起
上周排查了一个页面卡死的问题,组件每隔几十毫秒就重新渲染一次,CPU 占用飙升,浏览器直接失去响应。定位后发现根因是 useEffect 的依赖数组里放了一个每次渲染都会新建的对象,导致 effect 反复执行、setState 反复触发,形成死循环。这类问题在 React 项目里其实很常见,尤其是从 class 组件迁移到 hooks 的代码、或者在 effect 里访问了 props 和 state 却遗漏了依赖项时。它牵扯到 React 的浅比较机制、闭包捕获、以及所谓 stale closure 的...