vue3.0中的keep-alive使用及说明

 更新时间:2023年05月20日 14:21:39   作者:jiahao778  
这篇文章主要介绍了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;

vue3.0与vue2.0中keep-alive的用法区别

vue2.0

    <keep-alive>
      <router-view />
    </keep-alive>

vue3.0

    <suspense>
      <router-view v-slot="{ Component }">
        <keep-alive>
          <component :is="Component" />
        </keep-alive>
      </router-view>
    </suspense>

注意点

如果 router-view 嵌套的子组件里面还有router-view, 那么子组件里面也要加上keep-alive 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Vue 动态组件与全局事件绑定总结

    详解Vue 动态组件与全局事件绑定总结

    这篇文章主要介绍了详解Vue 动态组件与全局事件绑定总结,从示例中发现并解决问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 基于Vue CSR的微前端实现方案实践

    基于Vue CSR的微前端实现方案实践

    这篇文章主要介绍了基于Vue CSR的微前端实现方案实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • vue 实现手动分割日期

    vue 实现手动分割日期

    这篇文章主要介绍了vue 实现手动分割日期,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 基于WebRTC实现音视频通话功能

    基于WebRTC实现音视频通话功能

    WebRTC作为一种开放标准的实时通信协议,能轻松实现浏览器之间的实时音视频通信,本次主要分享基于WebRTC的音视频通话技术,讲解WebRTC原理和音视频传输等关键概念,通过案例实践,带大家掌握如何搭建一个音视频通话应用,需要的朋友可以参考下
    2024-05-05
  • vite配置@别名以及让vscode智能提示路经的步骤

    vite配置@别名以及让vscode智能提示路经的步骤

    这篇文章主要给大家介绍了关于vite配置@别名以及让vscode智能提示路经的步骤,文中通过代码示例以及图文介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友可以参考下
    2023-08-08
  • Vue的生命周期操作示例

    Vue的生命周期操作示例

    这篇文章主要介绍了Vue的生命周期操作,结合实例形式分析了vue生命周期中各个函数的运行步骤,需要的朋友可以参考下
    2019-09-09
  • vue2如何使用simple-keyboard软键盘有中文(拼音)

    vue2如何使用simple-keyboard软键盘有中文(拼音)

    这篇文章主要介绍了vue2如何使用simple-keyboard软键盘有中文(拼音),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Vuepress生成文档部署到gitee.io的注意事项及说明

    Vuepress生成文档部署到gitee.io的注意事项及说明

    这篇文章主要介绍了Vuepress生成文档部署到gitee.io的注意事项及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vue使用vxe-table导出和自定义Excel样式的详细教程

    Vue使用vxe-table导出和自定义Excel样式的详细教程

    vxe-table 不仅支持将表格数据导出为 .xlsx 文件,还提供了强大的自定义样式能力,因此本文给大家介绍了Vue使用vxe-table导出和自定义Excel样式的详细教程,需要的朋友可以参考下
    2026-05-05
  • 浅谈webpack SplitChunksPlugin实用指南

    浅谈webpack SplitChunksPlugin实用指南

    这篇文章主要介绍了浅谈webpack SplitChunksPlugin实用指南,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09

最新评论