Vue3 keepAlive状态下,点击刷新重新加载当前路由

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'
  })
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容