守护卸载与生命周期
守护层支持随时卸载和清理,适应 SPA 路由切换、用户登出等场景。
什么时候需要卸载/清理
| 场景 | 推荐操作 | 说明 |
|---|---|---|
| 用户登出 | clearState() + uninstall() | 清理在途状态 + 卸载守护,恢复 axios 原始行为 |
| SPA 路由切换 | clearState() | 清理待处理状态,防止路由残留请求影响下一页面 |
| Vue/React 组件销毁 | clearState() | 清理在途状态,避免悬挂 Promise |
| 热更新 / 重新安装 | uninstall() + 重新 setupRequestGuard | 重新安装守护时先卸载旧实例 |
clearState vs uninstall
clearState()— 只清空能力状态(pending 请求、等待方),不影响守护安装,后续请求仍受保护uninstall()— 完全移除守护层,恢复 axios 原始行为,适合退出或重建场景
使用示例
javascript
const requestManager = setupRequestGuard(axios, { /* 配置 */ });
// ---- Vue 组件销毁时清理 ----
onUnmounted(() => {
requestManager.clearState(); // 取消等待中的 reuse、释放在途记录
});
// ---- 用户登出时完全卸载 ----
function logout() {
requestManager.clearState(); // 先清状态
requestManager.uninstall(); // 再卸载守护,恢复 axios 原始行为
}
// ---- SPA 路由守卫中清理 ----
router.beforeEach(() => {
requestManager.clearState(); // 切换页面时清理上一页的残留状态
});
// ---- 热更新重装 ----
if (import.meta.hot) {
import.meta.hot.dispose(() => {
requestManager.uninstall(); // 旧模块销毁时卸载
});
}