vue中keep-alive内置组件缓存的实例代码


Posted in Javascript onApril 16, 2020

需求:
home 组件中有一个 name 的 data 数据。这个数据修改之后,再切换到其他的组件。再切换到 home 组件,希望 home 中 name 这个值是之前修改过的值。希望组件有缓存。
keep-alive 的使用方式:
将要缓存的组件使用 keep-alive 包裹住即可。
keep-alive优点的介绍:
1. 切换组件时,当前组件不会触发销毁的生命周期钩子。也就是说不会销毁了。
2. 切换回来时,也不会重新创建。(既然都没有被销毁,哪里来的重新创建呢)
3. 会多出两个生命周期的钩子函数
a. activated 缓存激活 第一次会触发、组件能被看到
一般根 created 做一样的事情:请求数据
b.deactivated 缓存失活 组件不能被看到
一般根 beforeDestroy 做一样的事情: 清除定时器、移除全局事件监听
4. 可以在 vue devtools 上看见组件的缓存情况
** keep-alive 的更多属性设置**
1. include 包含
a. include=“组件1,组件2” 注意 逗号前后不要有空格
b. :include="[组件1, 组件2]"
c. :include="/^hello/"
2. exclude 排除
a. exclude=“组件1,组件2” 注意 逗号前后不要有空格
b. :exclude="[组件1, 组件2]"
c. :exclude="/^hello/"
3. max 规定最大能缓存组件的数量,默认是没有限制的\
假定缓存队列是 [home, list]
现在进入about的时候 about 也会被缓存上,这时会将之前的第一个给排出去 [home, list, about] => [list, about] 先进先出原则。

概念就这些上代码

1.vue链接:https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.js
2.创建组件。(三个组件)

//组件一
   Vue.component("home", {
    data() {
     return {
      name: "张三",
     };
    },

    template: `
     <div>
      <h1>home</h1>
      <p>{{ name }}</p>
      <button @click="name = '李四'">修改name为 李四</button>
     </div>
    `,
    //实例创建完成的时候打印
    created() {
     console.log("home created");
    },
    //实例销毁前的打印
    beforeDestroy() {
     console.log("home beforeDestroy");
    },
    //激活缓存的时候打印组件能被看到
    activated() {
     console.log("home activated");
    },
    //缓存失活时打印 组件不能被看到
    deactivated() {
     console.log("home deactivated");
    },
   });
   //组件二
      Vue.component("list", {
    template: `
     <div>
      <h1>list</h1>
     </div>
    `,
		//激活缓存的时候打印组件能被看到
    created() {
     console.log("list created");
    },
		//缓存失活时打印 组件不能被看到
    beforeDestroy() {
     console.log("list beforeDestroy");
    },
   });
	//组件三
		Vue.component("about", {
    template: `
     <div>
      <h1>about</h1>
     </div>
    `,
		//激活缓存的时候打印组件能被看到
    created() {
     console.log("about created");
    },
		//缓存失活时打印 组件不能被看到
    beforeDestroy() {
     console.log("about beforeDestroy");
    },
   });

3.创建实例。

Vue.component("home", {
    data() {
     return {
      name: "张三",
     };
    },

body部分

<div id="app">
  //active是样式来做高亮用v-bind来绑定
  //@click自定义事件将实例里的数据改为home
  //点击的时候会触发component内置标签更换为home
   <button :class="{ active: curPage === 'home' }" @click="curPage = 'home'">
    home
   </button>
   <button :class="{ active: curPage === 'list' }" @click="curPage = 'list'">
    list
   </button>
   <button
    :class="{ active: curPage === 'about' }"
    @click="curPage = 'about'"
   >
    about
   </button>

   <hr />
   //用keep-alive内置组件包裹componet内置组件v-bind绑定max作用是最多缓存两个
   <keep-alive :max="2">
    <component :is="curPage"></component>
   </keep-alive>
   //方法二
   //排除法排除了about只有home与list可以缓存
   //<keep-alive exclude="about">
   // <component :is="curPage"></component>
   //</keep-alive> 
   //方法三
   //选择缓存法只有home与list可以被缓存
   //keep-alive include="home,list">
    //<component :is="curPage"></component>
   //</keep-alive>
  </div>

三种方法的具体用法在文章的开始的时候有介绍

总结

到此这篇关于vue中keep-alive内置组件缓存的实例代码的文章就介绍到这了,更多相关vue keep-alive内置组件缓存内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
文本框获得焦点和失去焦点的判断代码
Mar 18 Javascript
基于jquery实现的树形菜单效果代码
Sep 06 Javascript
详解JavaScript基于面向对象之继承
Dec 13 Javascript
原生javascript实现匀速运动动画效果
Feb 26 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
Sep 10 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
WebSocket的简单介绍及应用
May 23 Javascript
js实现无缝轮播图特效
May 09 Javascript
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
JS实现京东商品分类侧边栏
Dec 11 Javascript
详解Nuxt内导航栏的两种实现方式
Apr 16 #Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 #Javascript
vue下canvas裁剪图片实例讲解
Apr 16 #Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
Apr 16 #Javascript
js String.prototype.trim字符去前后空格的扩展
Aug 23 #Javascript
Vue Object 的变化侦测实现代码
Apr 15 #Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
Apr 15 #Javascript
You might like
PHP 存储文本换行实现方法
2010/01/05 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
php中文验证码实现方法
2015/06/18 PHP
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
Node.js模块加载详解
2014/08/16 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
Python字符串处理之count()方法的使用
2015/05/18 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python检测服务器端口代码实例
2019/08/31 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
房地产活动策划方案
2014/05/14 职场文书
经典禁毒标语
2014/06/16 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
公司出纳岗位职责
2015/03/31 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
python基础入门之普通操作与函数(三)
2021/06/13 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python