vue 使用keep-alive设置页面缓存失效

使用keep-alive 设置页面缓存,代码如下:
App.vue

 <keep-alive>
            <router-view v-if="$route.meta.keepAlive"></router-view>
        </keep-alive>
        <router-view v-if="!$route.meta.keepAlive"></router-view>

路由配置代码:

export default [
    {
        path: "/",
        redirect: "/car/list"
    },

    {
        path: "/car/list",
        component: () => import("@/views/car/list"),
        name: "car-list",
        meta: {
            keepAlive: true
        }
    },
    {
        path: "/car/detail",
        component: () => import("@/views/car/detail"),
        name: "car-detail",
        meta: {
            keepAlive: true
        }
    }
];

这两个页面的name也设置了,分别是:

  name: 'car-list',
 name: 'car-detail',

按理这两个页面设置缓存应该是成功的,但是运行后是失败的,返回这两个页面都是重新请求数据,执行created方法。

另一个神奇的现象是,我设置一个页面keep-alive时,页面缓存是成功的。比如配置文件为:

export default [
    {
        path: "/",
        redirect: "/car/list"
    },

    {
        path: "/car/list",
        component: () => import("@/views/car/list"),
        name: "car-list",
        meta: {
            keepAlive: true
        }
    },
    {
        path: "/car/detail",
        component: () => import("@/views/car/detail"),
        name: "car-detail"
    }
];

这种情况下,页面缓存成功。

请教下各位大佬,有没有人遇到过这种问题,或者可不可以提供个思路,谢谢

阅读 9.3k
2 个回答

找到原因了,跟keep-alive无关。是自己的坑。
自己的代码中使用了window.location.href=xxx或者window.location.reload()方法,导致页面刷新了,之前缓存的组件全部失效

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题