美文网首页前端开发那些事儿
keep-alive及其生命周期钩子

keep-alive及其生命周期钩子

作者: 程序小小黑 | 来源:发表于2021-04-01 14:35 被阅读0次

<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在组件的父组件链中。

作用:缓存组件内部状态,避免重新渲染

用法

keep-alive可以接收3个属性做为参数进行匹配对应的组件进行缓存:

  • include包含的组件(可以为字符串,数组,以及正则表达式,只有匹配的组件会被缓存)
  • exclude排除的组件(以为字符串,数组,以及正则表达式,任何匹配的组件都不会被缓存)
  • max缓存组件的最大值(类型为字符或者数字,可以控制缓存组件的个数)
// 只缓存组件name为a和b的组件
<keep-alive include="a,b"> 
  <component />
</keep-alive>

// 组件name为c的组件不缓存(可以保留它的状态或避免重新渲染)
<keep-alive exclude="c"> 
  <component />
</keep-alive>

// 如果同时使用include,exclude,那么exclude优先于include, 下面的例子只缓存a组件
<keep-alive include="a,b" exclude="b"> 
  <component />
</keep-alive>

// 如果缓存的组件超过了max设定的值5,那么将删除第一个缓存的组件
<keep-alive exclude="c" max="5"> 
  <component />
</keep-alive>

配合router使用

router-view也是一个组件,如果直接被包在keepalive里面,那么所有路径匹配到的视图组件都会被缓存,用法与缓存组件相同

  • 使用 include/exclude
  • 使用 meta 属性
    第一种方法:使用 include
//只有路径匹配到的 name 为 a 组件会被缓存
<keep-alive include="a">
    <router-view></router-view>
</keep-alive>

第一种方法:使用 meta 属性

// routes 配置文件
export default [
  {
    path: '/',
    name: 'home',
    component: Home,
    meta: {
      keepAlive: true // 需要被缓存
    }
  }, {
    path: '/user',
    name: 'user',
    component: User,
    meta: {
      keepAlive: false // 不需要被缓存
    }
  }
]
// App.vue
<keep-alive>
    <router-view v-if="$route.meta.keepAlive">
        <!-- 这里组件会被缓存,比如 Home! -->
    </router-view>
</keep-alive>

<router-view v-if="!$route.meta.keepAlive">
    <!-- 这里组件不会被缓存,比如 User! -->
</router-view>

keep-alive的生命周期

  • 初次进入时:created > mounted > activated;退出后触发 deactivated
  • 再次进入:会触发 activated;事件挂载的方法等,只执行一次的放在 mounted 中;组件每次进去执行的方法放在 activated 中

相关文章

  • keep-alive及其生命周期钩子

    是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在组件的父组件链中。 作用:...

  • vue生命周期

    触发钩子的完整顺序: 将路由导航、keep-alive、和组件生命周期钩子结合起来的,触发顺序,假设是从a组件离开...

  • vue基础巩固

    1、生命周期 一旦你使用了 keep-alive,那么你就可以访问另外两个生命周期钩子:activated 和 d...

  • keep-alive 相关面试题

    1.keep-alive的生命周期 当引入 keep-alive 的时候,页面第一次进入,钩子的触发顺序 crea...

  • Vue-计算属性和监听属性

    thiking 熟记Vue生命周期内的各个钩子函数以及其相应的对比和用法 计算属性(钩子函数--computed)...

  • angular 学习记录(七)

    一、生命周期钩子 当 Angular 实例化组件类并渲染组件视图及其子视图时,组件实例的生命周期就开始了。生命周期...

  • Vue 页面缓存keep-alive

    1. keep-alive的基础使用 最基础的一般是结合动态组件去使用: 2. 生命周期钩子 被包含在 中创建的组...

  • 详细的分析 Vue生命周期

    Vue 的生命周期 生命周期执行的函数叫法有三种: 生命周期钩子 生命周期函数 钩子函数 生命周期钩子概念: 在v...

  • angular生命周期

    大纲 1、angular生命周期是什么2、生命周期钩子分类3、Angular 2 指令生命周期钩子的作用及调用顺序...

  • react生命周期钩子函数

    react生命周期钩子

网友评论

    本文标题:keep-alive及其生命周期钩子

    本文链接:https://www.haomeiwen.com/subject/mnmfkltx.html