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 禁用浏览器的后退功能的简单方法
Dec 10 Javascript
Javascript实现动态菜单添加的实例代码
Jul 05 Javascript
jquery绑定事件不生效的解决方法
Feb 11 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
Mar 11 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
详解angularjs 关于ui-router分层使用
Jun 12 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
Jan 23 Javascript
vue导出html、word和pdf的实现代码
Jul 31 Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 Javascript
微信小程序版本自动更新的方法
Jun 14 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
Jul 18 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
E路文章系统PHP
2006/12/11 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php网站地图生成类示例
2014/01/13 PHP
php下获取http状态的实现代码
2014/05/09 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
javascript闭包的理解和实例
2010/08/12 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
深入解析Python中的上下文管理器
2016/06/28 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
python学习入门细节知识点
2018/03/29 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
Python笔记之观察者模式
2019/11/20 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
MySQL 时间类型的选择
2021/06/05 MySQL