路由视图让keep-alive包围
<keep-alive :include="getTagsName" :max="30">
<router-view />
</keep-alive>
添加选择缓存的按钮
<el-tag
v-for="(tag,i) in tags"
@close="doCloseTag(tag)"
@click="$router.push(tag)"
closable
>{{ tag.title }}</el-tag>
doCloseTag(tag) {
this.$store.commit("user/removeCache", tag);
},
vuex代码
removeCache(state, tag) {
let index = state.cached.findIndex(ele => ele.name === tag.name)
if (index !== -1) {
state.cached.splice(index, 1);
if (state.cached.length === 0) {
return router.push('/dashboard');
}
if (router.currentRoute.name !== tag.name) return;
let nextTag = state.cached[index - 1] || state.cached[index];
nextTag && router.push(nextTag);
}
},
router.beforeEach
router.beforeEach((to, from, next) => {
if (to?.meta?.title)
store.commit('user/addCache', {
name: to.name,
title: to.meta.title
});
next();
});