面试题答案
一键面试实现依赖关系
在Vue Pinia中,定义getterB依赖getterA很简单。示例代码如下:
import { defineStore } from 'pinia';
export const useMyStore = defineStore('myStore', {
state: () => ({
// 状态数据
}),
getters: {
getterA: (state) => {
// 计算逻辑
return someValue;
},
getterB: (state) => {
// 依赖getterA
const valueFromA = this.getterA;
// 基于getterA的返回值进行计算
return valueFromA + someOtherValue;
}
}
});
在getterB中,通过this.getterA
获取getterA的返回值,然后基于此进行计算。
Vue Pinia对getters的缓存机制
Vue Pinia会缓存getters的返回值。只要状态没有发生变化,多次访问同一个getter会直接返回缓存中的值,而不会重新执行getter的计算逻辑。这是因为Pinia将getters视为基于状态的衍生状态,类似于Vue的计算属性。只有当相关状态(即getter内部依赖的状态数据)发生变化时,对应的getter缓存才会失效,下次访问时会重新计算并更新缓存。这样可以避免不必要的重复计算,有效提高性能。