1. 需求
页面刷新后,TagsView丢失。需要保证vue-template刷新页面,页签 TagsView 不丢失
2. 修改
修改src/layout/components/TagsView/index.vue
// 解决 vue-admin-template 刷新页面 TagsView 丢失问题
beforeUnload() {
// 监听页面刷新
window.addEventListener('beforeunload', () => {
// visitedViews数据结构太复杂无法直接JSON.stringify处理,先转换需要的数据
const tabViews = this.visitedViews.map(item => {
return {
fullPath: item.fullPath,
hash: item.hash,
meta: { ...item.meta },
name: item.name,
params: { ...item.params },
path: item.path,
query: { ...item.query },
title: item.title
}
})
sessionStorage.setItem('tabViews', JSON.stringify(tabViews))
})
// 页面初始化加载判断缓存中是否有数据
const oldViews = JSON.parse(sessionStorage.getItem('tabViews')) || []
if (oldViews.length > 0) {
this.$store.state.tagsView.visitedViews = oldViews
}
},
mounted() {
this.initTags()
this.addTags()
// 解决 vue-admin-template 刷新页面 TagsView 丢失问题
this.beforeUnload()
},