keep-alive 缓存组件

应用场景

有时候我们不希望组件被重新渲染影响使用体验;
或者处于性能考虑,避免多次重复渲染降低性能。而是希望组件可以缓存下来,维持当前的状态。
这时候就可以用到keep-alive组件

<keep-alive>
      <component> </component>
</keep-alive>

区别

不使用 keep-alive 时 每次切换组件 会重复销毁组件---创建组件 重复发起请求调取数据
使用 keep-alive 后 每次切换组件 只会在第一次触发组件 created 生命周期函数 并且 离开该组件时不会销毁该组件

keep-alive 的生命周期

1.初次进入时:created > mounted > activated;退出后触发 deactivated
2.再次进入:会触发 activated;

keep-alive 的参数

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

<keep-alive include ="组件的name">

</keep-alive>

也可以通过路由表中的mate属性 配置哪些需要缓存

export default new Router({

  routes: [

    {

      path: '/',

      name: 'Hello',

      component: Hello,

      meta: {

        keepAlive: false // 不需要缓存

      }

    },
]
})
<keep-alive >
      <router-view v-if="this.$route.meta.keepAlive"> </router-view>
</keep-alive>

      <router-view v-if="!this.$route.meta.keepAlive"> </router-view>

注意如果是动态路由使用 keep-alive 需要给 router-view 设置key值

动态路由大多是使用一个组件 只是数据不同 所以key值 直接设置自己的路由信息即可

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

推荐阅读更多精彩内容