vue3 keep-alive

286 阅读1分钟

一、在APP.vue文件添加keep-alive标签

<template>
  <div class="app">
    <!--  Vue3-KeepAlive  -->
    <router-view v-slot="{ Component }">
      <keep-alive>
        <component :is="Component" :key="$route.path" v-if="$route.meta.keepAlive" />
      </keep-alive>
      <component :is="Component" :key="$route.path" v-if="!$route.meta.keepAlive" />
    </router-view>
  </div>
</template>

二:在router路由文件下的相关路由中,添加meta属性keepAlive

{
  path: '/demo',
  name: 'demo',
  component: () => import('../views/demo/demo.vue'),
  meta: {
    keepAlive: false,
  }
},

三:在页面中进行配置

方法一: 在需要返回的页面中,添加onBeforeRouteLeave

所有从当前页面返回上一页面的方式

import { onBeforeRouteLeave } from 'vue-router'
onBeforeRouteLeave(to,from,next){
   to.meta.keepAlive = true
   next(0)
 }

返回目的页面goodsShare需要缓存

import { onBeforeRouteLeave } from 'vue-router'
onBeforeRouteLeave(to,from,next){
   if(to.path == '/goodsShare'){
      to.meta.keepAlive = true
      next(0)
    } else {
      next()
    }
 }

方法二: 在页面二中,返回跳转按钮方法初修改路由返回方式

通过某按钮返回的方式

import { useRouter } from 'vue-router'
const router = useRouter()
router.go(-1)
//或者
router.back()