面试题答案
一键面试- 思路:
- 使用
keep - alive
时,activated
和deactivated
钩子函数可用于处理组件激活和停用的逻辑。对于不想缓存的数据,可在deactivated
钩子中存储当前值(例如存储到本地存储或全局状态管理工具中),在activated
钩子中再从存储中获取最新值并更新到表单。同时,也可利用Vue的响应式原理,将不想缓存的数据定义为非data
属性(如计算属性),每次获取时从最新数据源获取。
- 使用
- 主要步骤:
- 定义数据存储方式:
- 若使用本地存储,可使用
localStorage
对象。例如,在组件中定义存储函数:
- 若使用本地存储,可使用
- 定义数据存储方式:
methods: {
saveFormData() {
const { inputValue } = this;
localStorage.setItem('formInputValue', inputValue);
}
}
- 在
deactivated
钩子中存储数据:
deactivated() {
this.saveFormData();
}
- 在
activated
钩子中恢复数据:
activated() {
const inputValue = localStorage.getItem('formInputValue');
if (inputValue) {
this.inputValue = inputValue;
}
}
- 若使用计算属性:
- 例如表单的值依赖于一个全局状态管理工具(如Vuex)中的数据,可定义计算属性:
computed: {
formInputValue() {
return this.$store.state.globalFormValue;
}
}
这样每次访问formInputValue
时,都会从全局状态获取最新值,而不会依赖缓存。