keep-alive 用法 及activated,deactivated这两个生命周期函数

76 篇文章 2 订阅
订阅专栏

keep-alive

  • Props

    • include - 字符串或正则表达式。只有名称匹配的组件会被缓存。
    • exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存。
    • max - 数字。最多可以缓存多少组件实例。
  • 用法

    <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。

    当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

    在 2.2.0 及其更高版本中,activated 和 deactivated 将会在 <keep-alive> 树内的所有嵌套组件中触发。

    主要用于保留组件状态或避免重新渲染。

    <!-- 基本 -->
    <keep-alive>
      <component :is="view"></component>
    </keep-alive>
    
    <!-- 多个条件判断的子组件 -->
    <keep-alive>
      <comp-a v-if="a > 1"></comp-a>
      <comp-b v-else></comp-b>
    </keep-alive>
    
    <!-- 和 `<transition>` 一起使用 -->
    <transition>
      <keep-alive>
        <component :is="view"></component>
      </keep-alive>
    </transition>

    注意,<keep-alive> 是用在其一个直属的子组件被开关的情形。如果你在其中有 v-for 则不会工作。如果有上述的多个条件性的子元素,<keep-alive> 要求同时只有一个子元素被渲染。

  • include and exclude

    2.1.0 新增

    include 和 exclude 属性允许组件有条件地缓存。二者都可以用逗号分隔字符串、正则表达式或一个数组来表示:

    <!-- 逗号分隔字符串 -->
    <keep-alive include="a,b">
      <component :is="view"></component>
    </keep-alive>
    
    <!-- 正则表达式 (使用 `v-bind`) -->
    <keep-alive :include="/a|b/">
      <component :is="view"></component>
    </keep-alive>
    
    <!-- 数组 (使用 `v-bind`) -->
    <keep-alive :include="['a', 'b']">
      <component :is="view"></component>
    </keep-alive>

    匹配首先检查组件自身的 name 选项,如果 name 选项不可用,则匹配它的局部注册名称 (父组件 components 选项的键值)。匿名组件不能被匹配。

  • max

    2.5.0 新增

    最多可以缓存多少组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。

    <keep-alive :max="10">
      <component :is="view"></component>
    </keep-alive>

    <keep-alive> 不会在函数式组件中正常工作,因为它们没有缓存实例。

 activated,deactivated

        注意一点:activated,deactivated这两个生命周期函数一定是要在使用了keep-alive组件后才会有的,否则则不存在当引入keep-alive的时候,页面第一次进入,钩子的触发顺序created-> mounted-> activated,退出时触发deactivated。当再次进入(前进或者后退)时,只触发activated。

        事件挂载的方法等,只执行一次的放在 mounted 中;组件每次进去执行的方法放在 activated 中, activated 中的不管是否需要缓存多会执行。

实例演示:

created() {
    console.log(`我是第一个created`);
},
mounted(){
    console.log(`我是第二个mounted`);
},
activated(){
    console.log(`我是第三个activated`);
    console.log("页面第一次进入的时候,钩子触发的顺序是created->mounted->activated",'只要渲染页面就会被调用');
},
deactivated(){
    console.log("页面退出的时候会触发deactivated,当再次前进或者后退的时候只触发activated");
},

 打印结果为:

看一下退出的效果

OK,完事!剩下就是需要在activated、deactivated 中完成自己的任务逻辑了。

喜欢博主的可以点赞关注一下

---------------------------------------------------------------   END   ------------------------------------------------------------------

keep-alive缓存组件使用(6)参数使用说明:钩子周期函数activateddeactivated
jieweiwujie的博客
12-28 464
因此一个缓存页面,当有些数据不需要缓存,我们就可以使用这两个钩子函数处理。activateddeactivated
keep-alive的介绍及使用
01-08
定义: 如果需要频繁切换路由,这个时候就可以考虑用keep-alive了,来达到避免数据的重复请求的目的 keep-alive用来缓存组件,避免多次加载相应的组件,减少性能消耗。 简单一点来说就是从页面A链接到其他页面后回退到页面A不用在重新执行页面A的created生命周期的代码,只会从缓存中加载之前已经缓存页面A Props include – 字符串或正则表达式。只有名称匹配的组件会被缓存。 exclude – 字符串或正则表达式。任何名称匹配的组件都不会被缓存。 max – 数字。最多可以缓存多少组件实例。 一、用法介绍 keep-alive是一个内置组件和类似 keep-alive
keep-alive
Zhoujia1316的博客
06-01 938
keep-alive的概念 keep-alive是一个抽象组件:它自身不会渲染一个DOM元素,也不会出现在父组件链中;使用keep-alive包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。 作用 在组件切换过程中将状态保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性 参数 Keep-alive 组件提供了 include 和 exclude 两个属性,允许组件有条件的进行缓存。 include: 字符串或正则表达式。只有匹配的组件会被缓存。 exclude: 字符串或正则
keep-alive> 一分钟了解
最新发布
qq_34419312的博客
08-15 1079
一分钟了解
keep-alive 使用
weixin_41760500的博客
01-19 4575
一、基本使用 需求:有两个页面(A 和 B),当我们在页面A的table列表中点击查看详情按钮,跳转到B页面,在B页面点击返回时,要定位到之前A的列表位置, 不能刷新该页面。 在 <router-view /> 的外层包一个 keep-alive 如: <keep-alive include="pageA"> <router-view /> </keep-alive> 其中 include 为要缓存页面,如果有多个页面可用逗号隔开,pageA为.
keep-alive的使用
qq_45725851的博客
09-17 856
keep-alive的使用 有时候我们不希望组件被重新渲染影响使用体验;或者处于性能考虑,避免多次重复渲染降低性能。而是希望组件可以缓存下来,维持当前的状态。这时候就可以用到keep-alive组件。 keep-alive生命周期 初次进入时:created > mounted > activated;退出后触发 deactivated 再次进入:会触发 activated;事件挂载的方法等,只执行一次的放在 mounted 中;组件每次进去执行的方法放在
vue组件 keep-alive 和 transition 使用详解
01-19
当组件在 内被切换,它的 activateddeactivated两个生命周期钩子函数将会被对应执行。 include: 字符串或正则表达式。只有匹配的组件会被缓存。 exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。 ...
vuekeep-alive用法及问题描述
08-27
Vuekeep-alive用法及问题描述 Vue 中的 keep-alive 是一个非常重要的组件,它可以帮助我们缓存组件,防止二次渲染,从而提高应用程序的性能。 keep-alive 的作用 在做电商相关的项目中,当我们第一次进入...
vuekeep-alive组件的入门使用教程
12-10
为了解决这个问题,开发者需要利用`<keep-alive>`的生命周期钩子`activated`和`deactivated`。在`activated`钩子中恢复滚动监听,在`deactivated`钩子中移除监听,确保组件在切换时正确管理其状态和事件。 `<keep-...
vue 使某个组件不被 keep-alive 缓存的方法
12-11
提出问题 最近在做项目发现一个问题,当我...当组件在 keep-alive 内被切换,它的 activateddeactivated两个生命周期钩子函数将会被对应执行。 include – 字符串或正则表达式。只有匹配的组件会被缓存。 exc
proxy&keep_alive
weixin_40422539的博客
09-20 359
Object.defineProperty的缺点 深度监听需要一次性递归 无法监听新增属性/删除属性 无法原生监听数组,需要特殊处理 proxy基本使用 reflect返回布尔值判断是否成功 keep_alive keep-alive是一个抽象组件:它自身不会渲染一个DOM元素,也不会出现在父组件链中;使用keep-alive包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。 场景 用户在某个列表页面选择筛选条件过滤出一份数据列表,由列表页面进入数据详情页面,再返回该列表页面,我们希望:列
关于keep-alive的使用
hejianop的专栏
05-24 282
使用keep-alive之后,created和mouted只会调用一次。 此时可以使用activited进行数据的初始化,不过使用这个之后打开其他的详情页面,因为缓存会导致页面上显示零点几秒的脏数据,具体时长和服务器响应有关。 所以修改成需要缓存的地方使用缓存,不需要缓存的时候不用缓存 在路由的时候配置参数keepAlive, 默认是false即不适用缓存,需要使用加上参数 ...
keep-alive 的有关的生命周期函数
Erictezx的博客
12-18 913
keep-alive 是什么 : 我们在开发 Vue 的项目中,大部分组件是没有必要多次渲染的,所以 Vue 提供了一个内置组件 keep-alive缓存组件内部状态,避免重新渲染 生命周期函数: 在被 keep-alive 包含的组件/路由中,会多出两个生命周期的钩子:activateddeactivated。 1、activated 钩子: 在组件第一次渲染时会被调用,之后在每次缓存组件被激活时调用。 2、deactivated 钩子: 组件被停用(离开路由)时调用。使用 kee
keep-alive使用方法
weixin_53545517的博客
10-28 178
.content { position: absolute; top: 74px; left: 255px; bottom: 0; right: 0; background-color: #f2f2f2; box-sizing: border-box; width: auto; overflow-y: scroll; -webkit-transition: left 0.3s ease-in-out; transition: left 0.3s ease-in-out; /* pa...
keep-alive两个生命周期钩子函数
07-11
keep-alive 组件是 Vue.js 中的一个抽象组件,用于缓存其他组件。它提供了两个生命周期钩子函数来控制缓存组件的行为。 1. activated:在缓存的组件被激活时调用。当一个被 keep-alive 缓存的组件被切换到时,activated 钩子函数会被触发。你可以在这个钩子函数中执行一些逻辑,比如重新请求数据、更新状态等。 2. deactivated:在缓存的组件被停用时调用。当一个被 keep-alive 缓存的组件被切换出去时,deactivated 钩子函数会被触发。你可以在这个钩子函数中执行一些清理操作,比如取消订阅、重置状态等。 这两个生命周期钩子函数可以帮助你在 keep-alive 缓存的组件切换时进行必要的操作,以满足你的业务需求。
写文章

热门文章

  • Vue 配置postcss.config.js CSS处理和移动端适配方案! 33876
  • 微信小程序之弹出框 32299
  • 最新uniApp微信小程序获取头像open-type=“chooseAvatar“ @chooseavatar方法 22462
  • 如何获取swiper前页索引值与内容 16329
  • 微信小程序之缓存(本地缓存,同步缓存,异步缓存) 13152

分类专栏

  • 前端的那些事 28篇
  • Vue 3 5篇
  • vite 1篇
  • vue 4篇
  • Nginx 1篇
  • uniApp 1篇
  • Vue.js 16篇
  • 面试题 3篇
  • api 4篇
  • webpack 3篇
  • nvm 1篇
  • NPM 1篇
  • Element-ui 2篇
  • 魔兽世界 1篇
  • JavaScript 76篇
  • HTML 20篇
  • H5 5篇
  • node.js 13篇
  • MySQL 2篇
  • 微信小程序 13篇
  • ES6 3篇
  • 小程序 4篇
  • canvas 2篇
  • IndexDB 1篇
  • WebSql
  • iframe 1篇
  • webStorm 1篇
  • Egg.js 1篇
  • CSS 8篇
  • Koa 1篇

最新评论

  • 最新uniApp微信小程序获取头像open-type=“chooseAvatar“ @chooseavatar方法

    阿木木869: base64可以直接上传服务器吗

  • 最新uniApp微信小程序获取头像open-type=“chooseAvatar“ @chooseavatar方法

    m0_49126700: 非常的nice呀 ,谢谢大哥

  • web浏览器打开本地exe应用

    黄桃罐头和你: 请问这个始终允许的框是怎么弄的呀 我每次点要点一次确认很麻烦

  • web浏览器打开本地exe应用

    蚂蚁上的大象: 怎么不行?

  • 关于Element-UI Upload 上传图片第二次或第N次无反应的问题

    liang14658fox: 不管用

大家在看

  • Java中StringBuilder和StringBuffer的区别 199
  • [Meachines] [Medium] Sniper RFI包含远程SMB+ powershell用户横向+CHM武器化权限提升
  • 这是我用过最好用的桌面日历 这个日历功能太强大了~! 315
  • (java毕业设计源码下载)基于java(springboot)校园便利平台系统 506
  • 从技术打磨到产品验证:读《程序员修炼之道》的务实之道 740

最新文章

  • javaScript中微任务宏任务详解
  • CSS color-mix() 函数
  • vite打包配置基础
2024年4篇
2023年2篇
2022年4篇
2021年8篇
2020年17篇
2019年38篇
2018年33篇
2017年19篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家山东商场创意商业美陈作品池州园林玻璃钢雕塑蓬莱玻璃钢价值观雕塑陕西玻璃钢人物雕塑艺术摆件公园玻璃钢雕塑制造厂家玻璃钢花盆工艺培训玻璃钢冰墩墩雕塑黑河玻璃钢雕塑制作漯河公园不锈钢玻璃钢景观雕塑合肥特色玻璃钢雕塑优势上海玻璃钢造型雕塑批发太原玻璃钢广场雕塑厂家广东创意玻璃钢雕塑定做价格玻璃钢雕塑加工咨询吴川玻璃钢长颈雕塑珠海玻璃钢卡通雕塑生产厂家义乌学校玻璃钢雕塑广州大型玻璃钢花盆河南玻璃钢雕塑费用玻璃钢金色骆驼雕塑山西水果玻璃钢雕塑生产厂家花朵玻璃钢人物雕塑设计玻璃钢麋鹿雕塑福建口碑不错玻璃钢卡通雕塑四平玻璃钢雕塑工程施工商场季节性美陈经典案例中秋商场美陈玻璃钢雕塑表面喷真石漆漳州玻璃钢雕塑公司营口商场美陈搭建香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化