面试题答案
一键面试- 使用
include
和exclude
属性:- 原理:
include
定义只有名称匹配的组件会被缓存,exclude
定义名称匹配的组件不会被缓存。这样可以精准控制哪些组件需要被Keep - Alive
缓存,避免不必要的组件被缓存而占用资源。例如:
上述代码中只有<keep - alive include="ComponentA,ComponentB"> <router - view></router - view> </keep - alive>
ComponentA
和ComponentB
组件会被缓存。 - 原理:
- 在组件内使用
activated
和deactivated
钩子函数:- 原理:当组件被
Keep - Alive
缓存后,再次进入时会触发activated
钩子函数,离开时触发deactivated
钩子函数。在activated
钩子函数中可以执行一些数据初始化操作,而不是在created
或mounted
中执行,这样避免了重复渲染时重复执行初始化逻辑,从而节省资源。例如:
export default { activated() { // 在这里进行数据的重新获取或初始化等操作 this.fetchData(); }, deactivated() { // 可以在这里进行一些清理操作,比如取消定时器等 } }
- 原理:当组件被
- 利用
max
属性:- 原理:
max
属性用于指定可以缓存的最大组件实例数。当缓存的组件数量达到max
时,Keep - Alive
会按照LRU
(最近最少使用)算法淘汰最久未使用的组件实例,释放资源,避免缓存过多组件导致内存占用过高。例如:
上述代码表示最多缓存 5 个组件实例。<keep - alive :max="5"> <router - view></router - view> </keep - alive>
- 原理: