keep-alive

作用:

  vue内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM

  keep-alive是用在一个直属子组件被开关的情形,同时只有一个子组件在渲染,若有v-for则不会工作

<keep-alive>

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

</keep-alive>

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

export default new Router({

  routes: [

    {

      path: '/',

      name: 'Hello',

      component: Hello,

      meta: {

        keepAlive: false

      }

    },

    {

      path: '/page1',

      name: 'Page1',

      component: Page1,

      meta: {

        keepAlive: true

      }

    }

  ]

})

属性:

include:  字符串或正则表达式,只有名称匹配的组件会被缓存

exclude: 字符串或正则表达式,名称匹配的组件不会被缓存》

max:     数字,最多可以缓存多少组件实例

<keep-aliveinclude="a,b">

    <component:is="view"></component>

</keep-alive>

<keep-alive:include="/a|b/">

    <component:is="view"></component>

</keep-alive>

<keep-alive:include="['a','b']">

    <component:is="view"></component>

</keep-alive>

生命周期:

activated和deactivated会在keep-alive树内所有嵌套的组件中触发

如:B页面是缓存页面

当A页面跳到B页面时,B页面的生命周期:activated(可在此时更新数据)

B页面跳出时,触发deactivated

B页面自身刷新时,会触发created-mouted-activated

{

    path:'/',

    name:'A',

    component:A,

    meta:{keepAlive:true}}

exportdefault{

    data(){return{};},

    methods:{},

    beforeRouteLeave(to,from,next){

        to.meta.keepAlive=true;

        next()}}

exportdefault{

    data(){return{};},

    methods:{},

    beforeRouteLeave(to,from,next){

        to.meta.keepAlive=false;next()}}

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

推荐阅读更多精彩内容

  • 开场白 诸位简友,有缘相聚;走过路过,千万不要错过!今日评论第四十九场开场了,有钱的打个赏,无钱的捧个场,喜欢的点...
    陈良心阅读 6,947评论 129 159
  • 有一天, 我去世了, 恨我的人, 翩翩起舞, 爱我的人, 眼泪如露。 第二天, 我的尸体头朝西埋在地下深处, 恨我...
    故绪阅读 298评论 0 2
  • 自现象级英语 原则 1.慢速与节奏:用打节拍方法控制节奏,元音饱满,辅音利索(该省就省,该突出的就突出) 2.跟读...
    自观问渠阅读 321评论 0 1
  • 1、每次演讲不用传播太多观点,一个就足够,用论点或故事把这一个观点讲透。 2、演讲最好不要带着功利性去演讲,不要在...
    剽悍文霞阅读 561评论 6 5