面试题答案
一键面试避免不必要的组件重新渲染
- 使用 key:为动态组件设置唯一的
key
,确保 Vue 能准确识别组件,避免错误地复用。例如:
<component :is="currentComponent" :key="componentKey"></component>
- 数据分层:将不常变化的数据提升到父组件,避免子组件因父组件数据变化而重新渲染。例如,如果某些配置信息在整个向导过程中不变,就放在父组件。
- 计算属性:对于复杂的数据计算,使用计算属性,并合理设置依赖,只有依赖的数据变化时才重新计算。比如在向导某一步骤根据用户输入计算一个复杂结果,可使用计算属性。
computed: {
complexResult() {
// 依赖特定数据进行复杂计算
return this.input1 * this.input2 + this.input3;
}
}
合理利用 keep - alive 组件
- 包裹动态组件:在多步骤向导中,将动态组件用
keep - alive
包裹。
<keep - alive>
<component :is="currentComponent"></component>
</keep - alive>
这样,组件在切换时不会被销毁,而是被缓存,再次显示时直接从缓存中读取,提升性能。
2. 设置 include 和 exclude:通过 include
和 exclude
属性控制哪些组件被缓存。比如只缓存特定步骤的组件。
<keep - alive include="Step1Component,Step3Component">
<component :is="currentComponent"></component>
</keep - alive>
- 生命周期钩子:利用
activated
和deactivated
钩子函数。activated
在组件被激活(从缓存中取出显示)时调用,可在此处进行数据更新或初始化操作;deactivated
在组件被缓存时调用,可用于清理定时器等操作。
export default {
activated() {
// 组件激活时执行,如更新数据
this.fetchData();
},
deactivated() {
// 组件缓存时执行,如清理定时器
clearInterval(this.timer);
}
}