开启keep-alive及注意点

154 阅读1分钟

背景

Vue 2.0 出现keep-alive 缓存功能。本文使用场景:多页签的后台管理系统,缓存tab页内容。

开启

在路由切换外层包裹 标签。

<keep-alive >
      <router-view :key="key" />
</keep-alive>

只给部分页面开启

利用include属性

<keep-alive include="userManage">
      <router-view :key="key" />
</keep-alive>

排除部分页面开启

利用exclude属性

<keep-alive exclude="roleManage">
      <router-view :key="key" />
</keep-alive>

注意:使用include/exclude 属性需要给所有vue类的name赋值。注意不是路由的name,而是页面组件的name

export default {
  name: "roleManage",
}

开启后走的生命周期

keep-alive 会多2个生命周期,activated,deactivated这两个生命周期函数
  created() {
    console.log('created')
  },
  mounted(){
    console.log('mounted')
  },
  activated(){
    console.log('activated')
  },
  deactivated(){
    console.log('deactivated');
  },
  destroyed(){
    console.log("destroyed-被销毁")
  },

首次进入并离开:created -> mounted -> activated -> deactivated

2022-10-26.114605.png

二次进入并离开:activated -> deactivated

image.png

我们会发现,destroyed 这个一直没有执行。因为页面被缓存了所以一直不存在销毁。