vue-router 中使用 keepAlive ,离开页面的时候 mounted、created 等钩子被触发?

<keep-alive>
      <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>
{
    path: '/',
    name: 'Home',
    component: Layout,
    redirect: '/index',
    children: [
      {
        path: 'index',
        name: 'HomeIndex',
        component: () => import('@/views'),
        meta: {
          keepAlive: true
        }
      },
      {
        path: 'goods',
        name: 'GoodsIndex',
        component: () => import('@/views/Goods')
      }
    ]
  },

当前打开首页加载完成,然后进入其它页面的时候

created、mounted 等钩子会被触发 … 后退无刷新
就是离开首页会执行 mounted 等钩子 …… 因为我在钩子里实现了页面初始化,如果重复执行,这样我 keepAlive 没意义了啊…

阅读 2.9k
1 个回答
✓ 已被采纳

v-if 使得两个路由组件同时只存在一个,一个卸载,另外一个挂载,使得会触发 mountedcreated 钩子函数。
利用 <keep-alive>include实现你想要的效果,将要缓存的路由组件放到 include

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