为什么在Vue组件中使用Akita的select后数据不更新?
在用Akita管理Vue组件状态时遇到了奇怪的问题,我在store里定义了select,但页面数据一直没变。比如下面这个组件:
<template>
<div>{{ selectedItem?.name }}</div>
</template>
<script>
import { useStore } from '@/store';
export default {
computed: {
selectedItem() {
return useStore().select('selectedItem');
}
}
}
</script>
当我通过store.set({ selectedItem: newItem })修改数据后,控制台能看到store里的值变了,但页面就是不更新。试过在mounted里手动调用this.$forceUpdate()也不行,这是哪里出问题了?
map或pipe把它变成计算属性能理解的形式。我之前这样搞的,改下你的代码:
用
selectSnapshot直接拿值,Vue 就能正确监听变化了。记得改成setup写法,更简洁。map把数据转成一个响应式对象。修改后的代码:
如果还不行,确保 Akita 的 store 是用
VueAkitaPlugin初始化的。