• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Vue 内置组件keep-alive的使用示例

vue 搞代码 4年前 (2022-01-08) 18次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了Vue 内置组件keep-alive的使用示例,帮助大家更好的理解和学习使用vue,感兴趣的朋友可以了解下

keep-alive 是Vue内置的组件之一, 主要用于保留组件状态或避免重新渲染。

作用

   在组件切换过程中将状态保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验。

一、keep-alive 用法

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

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

Props:

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

  • include & exclude

如果你只想缓存部分组件的状态,可以使用include属性。

如果你想除掉一些组件,其他的才被缓存,可以使用exlucde属性。

  • max

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

  

使用示例:

1.缓存所有页面:

  <!--这里是会被缓存的组件-->

2.根据条件缓存部分页面

(更多用法见官网API)

  <div id="app"> // 1. 将缓存 name 为 newsList 或者 productList 的组件   // 2. 将不缓存 name 为 test 的组件  </div>

注意:

还有一步,你必须在需要被缓存状态的组件的script部分,给组件添加一个name属性。 如果没有使用keep-alive缓存状态的组件,可以不写name属性。但是如果使用了keep-alive缓存该组件状态,则此组件必须有这个属性。并且,这个属性的值,还必须跟标签中include属性的值完全一致,包括大小写。 以productList.vue组件为例 

  <!-- 这里是productList组件的html结构部分 -->

3.结合vue-router,缓存部分页面

 export default new Router({ mode: 'history', routes: [ { path: '/', name: 'home', component: Home, children: [ { path: 'products', name: 'products', component: products, meta: { keepAlive: true // 需要缓存 } }, { path: 'newsDetails', name: 'newsDetails', component: newsDetails, meta: { keepAlive: false  // 不需要缓存 } } ] } ] }) 

在 App.vue 里面

  <div id="app">  </div>

二、keep-alive 生命周期

包含在 keep-alive 中创建的组件,会多出两个生命周期的钩子: activated 与 deactivated。

1. activated

      在 keep-alive 组件激活时调用。

在组件第一次渲染时会被调用,之后在每次缓存组件被激活时调用。

第一次进入缓存路由/组件,在mounted后面,beforeRouteEnter守卫传给 next 的回调函数之前调用:

页面第一次进入的时候,钩子触发的顺序是created->mounted->activated

因为组件被缓存了,再次进入缓存路由/组件时,不会触发这些钩子:

  beforeCreate created beforeMount mounted 都不会触发。

2. deactivated

      在 keep-alive 组件停用(离开路由)时调用。       

使用了keep-alive就不会调用beforeDestroy(组件销毁前钩子)和destroyed(组件销毁),因为组件没被销毁,被缓存起来了。

这个钩子可以看作beforeDestroy的替代,如果你缓存了组件,要在组件销毁的的时候做一些事情,你可以放在这个钩子里。

  注意:

1、 使用 keep-alive 会将数据保留在内存中,如果要在每次进入页面的时候获取最新的数据,需要在 activated 阶段获取数据,承担原来created钩子函数中获取数据的任务。

2、只有组件被 keep-alive 包裹时,这两个生命周期函数才会被调用,如果作为正常组件使用,是不会被调用的,以及在 2.1.0 版本之后,使用 exclude 排除之后,就算被包裹在 keep-alive 中,这两个钩子函数依然不会被调用!

3、以上这两个钩子函数在服务器端渲染期间不被调用。

参考官方文档:cn.vuejs.org/v2/api/#kee…

本文来源gaodai#ma#com搞*!代#%^码$网!

以上就是Vue 内置组件keep-alive的使用示例的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Vue 内置组件keep-alive的使用示例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址