1.Keep-alive 是什么?
- keep-alive 是 vue 中的内置组件,能在组件切换过程中将状态保留在内存中,防⽌重复渲染 DOM
- keep-alive 包裹动态组件时,会缓存不活动的组件实例,⽽不是销毁它们
- keep-alive 可以设置以下 props 属性:
- include - 字符串或正则表达式。只有名称匹配的组件会被缓存
- exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存
- max - 数字。最多可以缓存多少组件实例
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link>|
<router-link to="/about">About</router-link>
</div>
<keep-alive include="Home" exclude="About">
<router-view></router-view>
</keep-alive>
</div>
</template>
<style>
</style>
设置了keep-alive 缓存的组件,会多出两个⽣命周期钩⼦( activated 与 deactivated )
2.使用场景
使⽤原则:当我们在某些场景下不需要让⻚⾯重新加载时我们可以使⽤ keep-alive
举个栗⼦:
- 当我们从 ⾸⻚ –> 列表⻚ –> 商详⻚ –> 再返回 ,这时候列表⻚应该是需要 keep-alive
- 从 ⾸⻚ –> 列表⻚ –> 商详⻚ –> 返回到列表⻚(需要缓存) –> 返回到⾸⻚(需要缓存) –> 再次进⼊列表⻚(不需 要缓存)
这时候可以按需来控制⻚⾯的 keep-alive 在路由中设置 keepAlive 属性判断是否需要缓存;