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 相关文章推荐
json-lib出现There is a cycle in the hierarchy解决办法
Feb 24 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
May 22 Javascript
{}与function(){}选用空对象{}来存放keyValue
May 23 Javascript
javascript两种function的定义介绍及区别说明
May 02 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
Jun 26 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
Jul 22 Javascript
JavaScript实现Base64编码转换
Apr 23 Javascript
json2.js 入门教程之使用方法与实例分析
Sep 14 Javascript
vue项目中axios使用详解
Feb 07 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
Oct 24 Javascript
(开源)微信小程序+mqtt,esp8266温湿度读取
Apr 02 Javascript
React配置子路由的实现
Jun 03 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从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
解决vue props 拿不到值的问题
2018/09/11 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
详解Python的Django框架中的templates设置
2015/05/11 Python
python实现线程池的方法
2015/06/30 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
anaconda如何查看并管理python环境
2019/07/05 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
python通过cython加密代码
2020/12/11 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
求职简历自荐信
2013/10/20 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书