面试题答案
一键面试实现思路
- 定义全局和局部状态:使用Pinia分别定义全局状态store和局部状态store。
- 监听局部状态变化:在局部状态store中,通过
watch
监听相关状态的变化。 - 更新全局状态:当局部状态变化影响全局状态时,在监听器中调用全局状态store的相关方法来更新全局状态。
关键代码示例
- 定义全局状态store(假设为
useGlobalStore
)
import { defineStore } from 'pinia';
export const useGlobalStore = defineStore('global', {
state: () => ({
userInfo: {
name: '',
preferences: {}
}
}),
actions: {
updateUserPreferences(preferences) {
this.userInfo.preferences = preferences;
}
}
});
- 定义局部状态store(假设为
useLocalStore
)
import { defineStore } from 'pinia';
import { useGlobalStore } from './globalStore';
export const useLocalStore = defineStore('local', {
state: () => ({
localPreferences: {}
}),
setup() {
const globalStore = useGlobalStore();
const { localPreferences } = storeToRefs(this);
watch(localPreferences, (newPreferences) => {
globalStore.updateUserPreferences(newPreferences);
}, { deep: true });
return { localPreferences };
}
});
在上述代码中,useLocalStore
通过watch
监听localPreferences
的变化,一旦变化,就调用useGlobalStore
的updateUserPreferences
方法更新全局状态中的用户偏好。