1. 新建一个reload.vue
跳转到当前页面后,重定向回原来页面。
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
beforeRouteEnter(to, from, next) {
// next({ ...from, replace: true }) 无法刷新keepAlive
next((vm: any) => {
// 获取当前Vue实例,调用setup定义的replaceRouter方法
// Vue2可以直接vm.$router.replace(from.fullPath)
vm.replaceRouter(from.fullPath)
})
},
setup() {
const router = useRouter()
// setup才能获取到路由方法
const replaceRouter = (url: string) => {
router.replace(url)
}
// 暴露方法
return { replaceRouter }
}
})
</script>
2. 添加路由地址
{
path: '/reload',
name: 'reload',
component: Layout,
redirect: '/reload/reload-page',
meta: {
hidden: true
},
children: [
{
path: '/reload/reload-page',
name: 'reload-page',
component: () => import('@/views/reload.vue'),
meta: {
title: 'reload-page',
hidden: true,
icon: ''
}
}
]
}
3. 跳转到reload,刷新当前路由
// 先清除当前页面keepAlive的include缓存
delCachedView(route)
// 跳转到reload
router.replace({
path: '/reload/reload-page'
})