• 通过上一篇博客,大家已经熟知keep-alive是什么作用的组件以及其简单应用,那么接下来再来进一步的了解一下keep-alive
  • props:官网链接https://cn.vuejs.org/v2/api/#keep-alive
  1. include 字符串或正则表达式,只有名称匹配的组件会被缓存
  2. exclude 字符串或正则表达式,任何名称匹配的组件都不会被缓存
  3. max 数字,最多可以缓存多少组件实例
  • props的使用
  1. <keep-alive include="test-keep-alive">
    //将缓存name为test-keep-alive的组件
        <component></component>
    </keep-alive>
    
  2. <keep-alive include="a,b">
    //将缓存name为a或者b的组件,结合动态组件使用
        <component :is="view"></component>
    </keep-alive>
  3. <keep-alive :include="/a|b/">
    //使用正则表达式,需使用v-bind
        <component :is="view"></component>
    </keep-alive>
  4. <keep-alive :include="includedComponents">
      <router-view></router-view>
    </keep-alive>
  5. <keep-alive exclude="test-keep-alive">
      <!-- 将不缓存name为test-keep-alive的组件 -->
      <component></component>
    </keep-alive>
  • ​结合router-view使用
<keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
//router.js
export default new Router({
  routes: [
    {
      path: '/',
      name: 'Hello',
      component: Hello,
      meta: {
        keepAlive: false // 不需要缓存
      }
    },
    {
      path: '/page1',
      name: 'Page1',
      component: Page1,
      meta: {
        keepAlive: true // 需要被缓存
      }
    }
  ]
})
  • keep-alive的生命周期
  1. activated: 页面第一次进入的时候,钩子触发的顺序是created->mounted->activated
  2. deactivated:  页面退出的时候会触发deactivated,当再次前进或者后退的时候只触发activated
Logo

前往低代码交流专区

更多推荐