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 相关文章推荐
js QQ客服悬浮效果实现代码
Dec 12 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
Nov 25 Javascript
jQuery常用知识点总结以及平时封装常用函数
Feb 23 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
Jun 16 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
react组件基本用法示例小结
Apr 27 Javascript
js代码实现轮播图
May 04 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 Javascript
Vue 监听元素前后变化值实例
Jul 29 Javascript
js实现限定范围拖拽的示例
Oct 26 Javascript
微信小程序:报错(in promise) MiniProgramError
Oct 30 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读取MySQL数据代码
2008/06/05 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
jquery 事件执行检测代码
2009/12/09 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
《学会待客》教学反思
2014/02/22 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
机关单位动员会主持词
2014/03/20 职场文书
《白鹅》教学反思
2014/04/13 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
开学第一天的感想
2015/08/10 职场文书
AngularJS实现多级下拉框
2022/03/25 Javascript