Skip to content

对keep-alive的理解

keep-alive是什么

KeepAlive 是一个内置组件,允许我们在多个组件之间动态切换时有条件地缓存组件实例。

keep-alive可以设置以下props属性:

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

  • exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存

  • max - 数字。最多可以缓存多少组件实例

额外具有的生命周期

当一个组件实例从 DOM 中删除,但它是 缓存的组件树的一部分时,它会进入停用状态,而不是被卸载。当组件实例作为缓存树的一部分插入到 DOM 中时,它就会被激活。

keepnt-alive 组件可以使用 onActivated()onDeactivated() 为这两种状态注册生命周期挂钩

使用场景

使用原则:当我们在某些场景下不需要让页面重新加载时我们可以使用keepalive

当我们从首页–>列表页–>商详页–>再返回,这时候列表页应该是需要keep-alive

从首页–>列表页–>商详页–>返回到列表页(需要缓存)–>返回到首页(需要缓存)–>再次进入列表页(不需要缓存),这时候可以按需来控制页面的keep-alive

思路:

  • 在路由中设置keepAlive属性判断是否需要缓存
  • 在组件中使用keep-alive

原理