vue,pinia中store赋值,推荐使用computed,能做到响应,直接解构赋值做不到,备忘
在Vue和Pinia中,如果你想要在store中进行赋值操作,并确保视图能够响应这些变化,你应该使用computed,而不是直接解构赋值。
以下是一个简单的例子,展示如何在Pinia store中使用computed进行响应式赋值:
// 假设你有一个Pinia store,名为myStore
import { defineStore } from 'pinia'
export const useMyStore = defineStore('myStore', {
state: () => ({
counter: 0
}),
actions: {
increment() {
this.counter += 1;
}
}
});
// 在组件中使用store
import { useMyStore } from '@/stores/myStore';
import { computed } from 'vue';
export default {
setup() {
const myStore = useMyStore();
// 使用computed进行响应式赋值
const counterDoubled = computed({
get: () => myStore.counter * 2,
set: (value) => {
myStore.counter = value / 2;
}
});
return {
counterDoubled
};
}
};
在上面的例子中,counterDoubled
是一个computed属性,它的getter返回counter
的值乘以2,setter将counter
的值设置为新值除以2。这样,无论counter
的值如何变化,counterDoubled
都会正确响应,并保持视图的同步。
评论已关闭