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 相关文章推荐
jQuery 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
关于jQuery中.attr()和.prop()的问题探讨
Sep 06 Javascript
node.js操作mongoDB数据库示例分享
Nov 26 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
javascript 内置对象及常见API详细介绍
Nov 01 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 Javascript
JavaScript生成简单等差数列
Nov 28 Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 Javascript
react项目如何使用iconfont的方法步骤
Mar 13 Javascript
webpack的pitching loader详解
Sep 23 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 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 面向对象 final类与final方法
2010/05/05 PHP
php时间戳转换的示例
2014/03/31 PHP
php除数取整示例
2014/04/24 PHP
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
python判断字符串是否包含子字符串的方法
2015/03/24 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
python算的上脚本语言吗
2020/06/22 Python
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
车间班长岗位职责
2013/11/30 职场文书
地理教师岗位职责
2014/03/16 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
MySql开发之自动同步表结构
2021/05/28 MySQL
MySQL8.0的WITH查询详情
2021/08/30 MySQL