React 中 useEffect 清理函数的执行时机与异步请求取消
在 React 组件里用 useEffect 发起数据请求时,如果组件在请求完成前被卸载或者依赖项快速变化,旧请求的回调仍然可能执行,导致 setState 警告、状态覆盖或者内存泄漏。这个问题常见于搜索联想、路由切换和带分页或筛选的列表页。很多人知道 useEffect 可以返回一个清理函数,但对它到底在什么时候执行、和首次渲染与重渲染的顺序关系、以及如何配合 AbortController 取消 fetch 并不清楚。下面从一次真实遇到的搜索框状态错乱出发,梳理清理函数的执行时机,并给出几种能落地的取消...