最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Vue2.6:keep-alive 简述

    正文概述 掘金(UOrb)   2020-12-11   618

    简介

    该文章主要是一个记录,会简单的介绍 Vue2.6 中 keep-alive 相关的内容

    作用

    keep-alive 主要是用于 Vue 组件的缓存,也就是当你需要频繁的在多个组件视图中进行切换的时候,你就可以考虑使用 keep-alive;
    keep-alive 可以让组件保持存活,在二次乃至多次使用的时候,不需要重复去渲染,也就意味着不会走第二次 生命周期函数;
    不过这也意味着,在没有特殊处理的情况下,被缓存的组件显示的数据始终是第一次加载时候的样子。

    使用方法

    keep-alive 的使用方法非常的简单,只需要使用 <keep-alive></keep-alive> 标签去包裹需要缓存的组件即可。
    示例如下:

      // 组件缓存
      <keep-alive>
          <component :is="componentName" />
      </keep-alive>
    
      // 路由缓存
      <keep-alive>
          <router-view />
      </keep-alive>
    ...
    

    生命周期函数

    被 keep-alive 包裹的组件的生命周期是有区别于普通的组件。
    被 keep-alive 包裹的组件中,会多出两个生命周期 activated、deactivated
    第一次进入被 keep-alive 包裹的组件中的时候会依次调用 beforeCreate -> created -> beforeMount -> mounted -> activated,其后的进入皆只会调用 activated,因为组件被缓存了,再次进入的时候,就不会走 创建、挂载 的流程了。
    被 keep-alive 包裹的组件退出的时候就不会再执行 beforeDestroy、destroyed 了,因为组件不会真正意义上被销毁,相对应的组件退出的时候会执行 deactivated 作为替代。

    activated

    activated 会在组件进入(再次渲染)的时候被触发

    deactivated

    deactivated 会在组件离开(停用、移除)的时候被触发

    配置

    在使用中,特别是进行了路由缓存的时候,总归有些组件需要实时刷新不想让它进行缓存的,那么这里我们就可以用到 include、exclude 去进行匹配。
    两种配置可以并行使用(同时使用),需要注意的是 exclude 优先级是大于 include 的。

    那么我们所有组件都进行缓存的时候,会占用很多的空间,我们可以使用 max 去制定缓存组件的最大数量,当超过最大数量的时候,那么最久远的组件缓存将被释放。

    匹配规则:

    1. 组件/路由的 name 配置;
    2. 父组件中 components 的键值;

    注意:匿名组件是无法进行匹配的。

    include

    顾名思义,匹配到的 组件 会被缓存, 可以使用 字符串(逗号分隔)、正则表达式、数组等方法进行匹配。
    示例如下:

      // 字符串
      <keep-alive include="name1,name2">
          <router-view />
      </keep-alive>
      
      // 数组
      <keep-alive :include="/name1 | name2/">
        <router-view />
      </keep-alive>
    
      // 数组
      <keep-alive :include="['name1', 'name2']">
        <router-view />
      </keep-alive>
    

    exclude

    顾名思义,匹配到的 组件 不会被缓存, 可以使用 字符串(逗号分隔)、正则表达式、数组等方法进行匹配。
    示例如下:

      // 字符串
      <keep-alive exclude="name1,name2">
          <router-view />
      </keep-alive>
      
      // 数组
      <keep-alive :exclude="/name1 | name2/">
        <router-view />
      </keep-alive>
    
      // 数组
      <keep-alive :exclude="['name1', 'name2']">
        <router-view />
      </keep-alive>
    

    max

    可缓存组件的最大数量,需要传入数字,可以是字符型和数值型的数据类型。
    示例如下:

      // 字符串
      <keep-alive max="5">
        <router-view />
      </keep-alive>
      
      // 数值
      <keep-alive :max="5">
        <router-view />
      </keep-alive>
    

    路由配置

    在缓存路由的时候,也可以通过配置 meta 来判断路由是否需要缓存和不缓存 示例如下:

    	...
        {
        	path: '/keep',
            name: 'Keep',
            component: Keep,
            meta: {
            	keepAlive: true // 缓存
            }
        },
        {
        	path: '/alive',
            name: 'Alive',
            component: Alive,
            meta: {
            	keepAlive: false // 不缓存
            }
        }
        ...
    

    结束

    以上就是 keep-alive 的简述了,如果对您有帮助的话,可以点个?。


    起源地下载网 » Vue2.6:keep-alive 简述

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元