当前位置: 首页 > Web前端 > vue.js

vue的keep-alive详解

时间:2023-04-01 12:34:28 vue.js

功能介绍keep-alive是vue2.0新增的一个特性,可以缓存某个组件或者某个路由。缓存的好处:节省性能消耗,避免频繁重新渲染一个组件,省钱和保存用户状态,例如:我们正在填写收货地址的页面,我们需要跳转到另一个页面,选择地址定位信息,然后返回继续填充。此时需要缓存投递地址页面,避免页面跳转导致用户数据丢失。基本方法:缓存组件,keep-alive只会渲染一次缓存路由,都在keep-alive标签下的路由会被缓存:高级用法有时候,我们只需要缓存一些页面或者某些组件。方法一:在路由中配置router.mate:constrouter=[{name:'login',path:'/login',component:login,},{path:'/createResume',name:'createResume',component:createResume,meta:{isKeepAlive:true}},{path:'/test',name:'test',component:test,meta:{isKeepAlive:true}}]使用路由元数据配置一个isKeepAlive来判断你是否需要缓存页面,需要在应用路由中做如下修改:设置后,test和createResume页面会被缓存,其他页面不缓存,跳转时销毁。方法二:inlcude/excludeinlcude包含组件并缓存,exclude不包含组件并缓存,两者都可以用逗号分隔的字符串、正则表达式或数组表示:我们看到component是用来渲染动态组件的,它渲染的组件跟is组件名称相关。当componentName改变时,include中包含的正则表达式:/mytable|mybuttom/将被缓存。再次出现时,不会重新创建,不在exclude中的组件会被缓存。.以上使用方法同样适用于路由。注意:所有匹配的都是匹配组件的名称。没有名字的组件或路由将不会被匹配方法三:动态判断我们只需要动态改变keepAliveArr中的值,动态设置哪些组件或路由页面需要缓存,非常灵活。缓存组件的钩子函数我们都知道vue组件的生命周期会触发beforeCreate、created、beforeMount、mounted等钩子函数,但是缓存组件或页面第一次渲染后,再次进入不会触发abovehookagainfunction,但是触发激活的hook函数,你可以把逻辑放在这里去做。同理:beforeDestroy和destroyed在离开缓存组件时不会触发,可以使用deactivatedhook代替离开缓存组件。更详细的解释可以参考Vue官方文档:学习官方文档如逆水行舟。博文,和大家一起进步,希望大家可以关注我,第一时间收到最新文章。公众号前端日常面试题分享: