首页 > 其他分享 >vue中keep-alive的使用

vue中keep-alive的使用

时间:2022-10-24 19:24:05浏览次数:74  
标签:缓存 渲染 调用 alive keep vue 组件

vue中keep-alive的使用

什么是keep-alive

  • keep-alive是vue的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和transition相似,keep-alive是一个抽象组件:它自身不会渲染成一个dom元素,也不会出现在父组件链中。
    keep-alive的作用
    在组件切换过程中将状态保留在内存中,防止重复渲染Dom,减少加载时间及性能消耗,提高用户体验性。
    keep-alive的原理
    在create函数调用时将需要缓存的VNode节点保存在this.cache中/在render(页面渲染时),如果VNode的name符合缓存条件(可以用include以及exclude控制),则会从this.cache中取出之前缓存的VNode实例进行渲染。
    • VNode:虚拟DOM,其实就是一个JS对象
  • 可添加的属性
    include 字符串或正则表达式。只有名称匹配的组件会被缓存
    exclude 字符串或正则表达式。任何名称匹配的组件都不会被缓存
    max-数字 最多可以缓存多少组件实例
    <!-- 动态组件 -->
    <!-- is属性,值为组件标签名 -->
    可以通过keep-alive保留组件的状态,避免组件的销毁和重建
    include可以设置哪些组件需要缓存
    用逗号分隔组件名,注意不要加空格
    <keep-alive include="kindb,userd">

    <!-- 正则表达式 使用 v-bind  -->
    <keep-alive :include="/^(kindb|userd)$/">

    <!-- 数组,使用v-bind  -->
    <keep-alive :include="['kindb','userd']">
      <component :is="currentType"></component>
    </keep-alive>

生命周期函数

1、activated
在keep-alive组件激活时调用
该钩子函数在服务器端渲染期间不被调用
2、deactivated
在keep-alive组件停用时调用
该钩子在服务器端渲染期间不被调用

注意:::注意: 只有组件被 keep-alive 包裹时,这两个生命周期函数才会被调用,如果作为正常组件使用,是不会被调用的,以及在 2.1.0 版本之后,使用 exclude 排除之后,就算被包裹在 keep-alive 中,这两个钩子函数依然不会被调用!另外,在服务端渲染时,此钩子函数也不会被调用。

标签:缓存,渲染,调用,alive,keep,vue,组件
From: https://www.cnblogs.com/maxiaohu/p/16822485.html

相关文章

  • [转] VUE 组件的构成
    一个基本的vue组件结构类似这样:<template><h1>这是App.vue根组件</h1><h3>abc--{{username}}</h3><hr/><p>count值是:{{count}}</p><button@c......
  • Vue.nextTick核心原理
    相信大家在写vue项目的时候,一定会发现一个神奇的api,Vue.nextTick。为什么说它神奇呢,那是因为在你做某些操作不生效时,将操作写在Vue.nextTick内,就神奇的生效了。那这是什么......
  • Vue3, setup语法糖、Composition API全方位解读
    起初Vue3.0暴露变量必须return出来,template中才能使用;Vue3.2中只需要在script标签上加上setup属性,组件在编译的过程中代码运行的上下文是在setup()函数中,无......
  • Vue源码解读之InitState
    前面我们讲到了_init函数的执行流程,简单回顾下:初始化生命周期-initLifecycle初始化事件-initEvents初始化渲染函数-initRender调用钩子函数-beforeCreate初始化依赖......
  • vue3 main.ts文件中引入js文件
    提示无法找到模块的申明文件解决步骤:在tsconfig.json文件中加入一个参数:allowJS"compilerOptions":{"target":"esnext","module":"esnext","stri......
  • Vue3源码解读之patch
    例子代码本篇将要讲解domdiff,那么咱们结合下面的例子来进行讲解,这个例子是在上一篇文章的基础上,加了一个数据变更,也就是list的值发生了改变。html中增加了一个按钮change......
  • docker+vue+jenkins
    前提:1.jenkins中git已经安装完成2.jenkins其它配置可查看其它链接一、目录形式  二、dockerfile FROMnode:12.13.0asbuild-stageARGPROFILERUNmkdir-p......
  • vue中上传、下载xlsx文件方法
    1.xlsx依赖引入npminstallxlsx--save2.downloadExcel模板下载(参数:file_Name、file_List)varXLSX=require('xlsx');//constsheetName='模板';//constfi......
  • vue
    1前端发展介绍#HTML(5)、CSS(3)、JavaScript(ES5、ES6、ES13):编写一个个的页面->给后端(PHP、Python、Go、Java)->后端嵌入模板语法->后端渲染完数据->返回数......
  • Vue+el-select v-model绑定为对象时回显失效的问题探究
    源代码如下:<template><el-selectv-model="media"value-key="mediaId"placeholder="请选择"@change="mediaChange"><el-optionv-for="iteminmedias"......