用AbortController取消fetch请求,避免组件卸载后更新状态
在Vue或React组件里发异步请求,用户快速切换路由或者关闭弹窗时,组件已经卸载了,但请求还在飞。等响应回来之后,回调里执行setState或者修改ref,React会警告“Can't perform a React state update on an unmounted component”,Vue虽然不报警告,但逻辑上你依然在操作一个不该再被更新的状态。这个问题在搜索框联想、tab切换、弹窗内加载数据时特别常见,原因是fetch本身没有提供取消机制,早期大家用XMLHttpRequest的abort方法,或者引入axios的CancelToken。现代浏览器已经原生支持AbortCon...