keep-alive 是 Vue提供的一个抽象组件,用来对组件进行缓存,从而节省性能,作为一个抽象的组件,在页面渲染后不会被渲染成一个DOM元素。

    1. <keep-alive>
    2. 内容标签...(如:<router-view />
    3. </keep-alive>

    当组件在keep-alive内被切换时,组件的activated、deactivated这两个生命周期钩子函数会被执行

    设置在特定的情况下强制刷新某些组件:

    1. 利用include、exclude属性
      1. 表示只有name属性为bookLists,bookLists的组件会被缓存(注意是组件的name/名字,而不是路由的名字),其他组件不会被缓存
      2. 表示只有name属性为indexLists的组件不会被缓存,其他组件都会被缓存
    2. 利用meta属性
      1. { path:’/‘,name:’home’,compoents:Home,meta:{keepAlive:false} },{…}
      2. 标签中做this.$router.meta.keepAlive的判断,是否在keep-alive标签内使用该组件 v-if v-else
    3. 官方提出的解决方案响应路由参数的变化

    this.$nextTick()
    provide(){}
    inject(){}