vue3.0中的keep-alive

keep-alive

用法

  • keep-alive是vue中的一个内置组件,通常用它来包裹一个动态组件,keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。
  • 它有两个特殊的生命周期钩子activateddeactivated,在vue3.0里面生命周期函数前面都要加上on,onActivated,onDeactivated。当组件在使用了keep-alive包裹时,正常的生命周期函数mountedunmounted将不会执行,取而代之的是为它新增的这个两个特殊钩子函数。
  • vue3.0生命周期图:
    ![Alt](https://img-home.csdnimg.cn/images/20220524100510.png

属性

  • include:只有名称匹配的组件会被缓存;类型可以是数组、字符串或者正则。
  • exclude:名称匹配的组件不会被缓存;类型可以是数组、字符串或者正则。
  • max:最多可以缓存多少组件实例。

vue3中使用

vue3中的写法和vue2中稍微有点不同,具体代码可以参考下方:

<router-view v-slot="{ Component, route }" id="pageWrapper">
    <transition :name="transitionName" mode="out-in">
      <keep-alive :include="cacheRouter">
        <component :is="Component" />
      </keep-alive>
    </transition>
 </router-view>

设置被缓存的路由

  • 可以直接写死,把需要缓存的路由name写到一个数组中,这样最简单粗暴,不过不灵活,不建议使用这种方式
cacheRouter: ['home', 'order'];
  • 通过设置路由原信息
    在需要被缓存的组件的meta里面添加keepAlive标记
export const routes: RouteRecordRaw[] = [
  {
    path: '/myLogin',
    name: 'myLogin',
    component: () => import('@/views/login/login.vue'),
    meta: {
      title: '登录',
      index: 1,
      keepAlive: true,
    },
  },
];
let cacheList: any[] = [];
const keepAliveView = (_route: RouteRecordRaw[], _cache: RouteRecordName[]): void => {
  _route.forEach((item) => {
    item.meta?.keepAlive && item.name && _cache.push(item.name);
  });
};
//routes 路由配置数组
keepAliveView(routes, cacheList);

export default cacheList;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiahao778

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值