weixin_45840746 2023-05-22 13:53 采纳率: 35.6%
浏览 45
已结题

vue3 keepalive缓存问题

有三个页面,upload到chart到three,我想实现chart到three ,返回时chart缓存不刷新,upload到chart时,chart不缓存,这个怎么实现哎,我没有使用vuex,更改keepalive状态总是不行
app.vue

<template>

  <router-view v-slot="{ Component }">
    <keep-alive>
      <component
        :is="Component"
        v-if="$route.meta.keepAlive"
        :key="$route.name"
      ></component>
    </keep-alive>
    <component
      :is="Component"
      v-if="!$route.meta.keepAlive"
      :key="$route.name"
    ></component>
  </router-view>

</template>

<script  lang="ts">
import { defineComponent } from "vue";

export default defineComponent({
  name: "App",
  setup() {},
});
</script>

<style scoped>
</style>

router.ts


```javascript
import chart from '@/views/ChartView.vue'
import { createRouter, createWebHistory, onBeforeRouteLeave } from 'vue-router'



const router = createRouter({
    history: createWebHistory(import.meta.env.BASE_URL),
    routes: [
        {
            path: '/',
            name: 'home',
            component: () => import('@/views/HomeView.vue')
        },
        {
            path: '/upload',
            name: 'upload',
            component: () => import('@/views/UploadView.vue')
        },
        {
            path: '/test',
            name: 'test',
            component: () => import('@/views/test.vue')
        },
        {
            path: '/chart',
            name: 'chart',
            component: () => import('@/views/ChartView.vue'),
            meta: {
                keepAlive: true
            }
        },
        {
            path: '/three',
            name: 'three',
            component: () => import('@/views/ThreeView.vue'),
            meta: {
                keepAlive: false
            }

        },
        {
            path: '/empty',
            name: 'empty',
            component: () => import('@/views/EmptyView.vue')
        }

    ]
})

// router.beforeEach((to, from, next) => {
//     console.log('to:', to)
//     console.log('from:', from)
//     if (from.path == '/chart' && to.path == '/upload') {
//         from.meta.keepAlive = false

//     }
//     console.log('from:', from)

//     next();
// });

export default router


```

  • 写回答

1条回答 默认 最新

  • 孤月葬花魂 2023-05-22 17:41
    关注

    每个路由里边都没有设置 keepAlive 属性,取得话都是false
    v-if="$route.meta.keepAlive" 永远都是 不渲染的,所以 用keep-alive 包裹有什么用呢

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月23日
  • 创建了问题 5月22日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价