import Vue from "vue"; export default { namespaced: true, state: { caches: [], }, actions: { // 添加缓存的路由组件 addCache({ state, dispatch }, componentName) { if (Array.isArray(componentName)) { componentName.forEach((item) => { dispatch("addCache", item); }); return; } const { caches } = state; if (!componentName || caches.includes(componentName)) return; caches.push(componentName); console.log("缓存路由组件:", componentName); }, // 移除缓存的路由组件 removeCache({ state, dispatch }, componentName) { if (Array.isArray(componentName)) { componentName.forEach((item) => { dispatch("removeCache", item); }); return; } const { caches } = state; const index = caches.indexOf(componentName); if (index > -1) { console.log("清除缓存的路由组件:", componentName); return caches.splice(index, 1)[0]; } }, // 移除缓存的路由组件的实例 async removeCacheEntry({ dispatch }, componentName) { const cacheRemoved = await dispatch("removeCache", componentName); if (cacheRemoved) { await Vue.nextTick(); dispatch("addCache", componentName); } }, // 清除缓存的路由组件的实例 clearEntry({ state, dispatch }) { const { caches } = state; caches.slice().forEach((key) => { dispatch("removeCacheEntry", key); }); }, }, };