keep-alive使用与activated钩子函数

keep-alive

作用:对组件进行缓存,提高性能。

说明:啥意思呢?有两个组件A、B。我们在A组件上操作的数据,此时我们切换到组件B,再切换到A组件,A组件并不会重新渲染,而是保存之前的状态。

keep-alive是一个抽象标签,不会被渲染承具体的dom元素。这点与template类似。

<keep-alive :include="componentsList">
      <router-view></router-view>
</keep-alive>

其中,

include(包含)属性是一个被缓存组件name的数组。其中的组件都会被缓存。

exclude(排除)属性是一个不被缓存组件name的数组。其中的组件都不会被缓存。

注意:是组件的name属性,不是路由的name属性。

如果需要缓存的页面太多,在数组中一个个添加name,显然有点太繁琐了。利用meta属性来进行控制我们需要进行缓存的页面:

方法:在路由meta设置是否进行缓存的标记

export default[
 {
  path:'/',
  name:'home',
  components:Home,
  meta:{
    keepAlive:true //需要被缓存的组件
 },
 {
  path:'/book',
  name:'book',
  components:Book,
  meta:{
     keepAlive:false //不需要被缓存的组件
 } 
]

在router-view中进行判断,需要缓存则放入keep-alive标签中。

<keep-alive>
  <router-view v-if="this.$route.meat.keepAlive"></router-view>
  <!--这里是会被缓存的组件-->
</keep-alive>
<router-view v-if="!this.$router.meta.keepAlive"></router-view>
<!--这里是不会被缓存的组件-->

activated钩子函数

什么时候调用?

答:进入已经缓存的页面时,触发的钩子函数。

记住:包含了keep-alive的组件,created()、mounted()都只会触发一次。但是activated每一次进入组件,都会触发一次哦~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容