【发布时间】:2019-11-09 16:04:46
【问题描述】:
我想通过突变将属性添加到store.state。非常简单的例子:
// state.js
export default () => ({
Prop1: '1',
Prop2: '2'
})
//mutations.js
export default {
makeProp (state, anotherProp) {
return state.anotherProp = anotherProp;
}
}
// State Client
export default () => ({
Prop1: '1',
Prop2: '2',
anotherProp: 'what ever'
})
一切都很好。但令人讨厌的是,它在 Vue-Component 中似乎不再是响应式的了。如果anotherProp 获得新值,则组件不会呈现它。
如果我在 State 中定义了 anotherProp,它是反应式的。我可以想象为什么。我猜 Vue 的反应需要知道它的数据,所以它知道要听哪些变化。
但是我能做什么呢?我真的需要通过突变添加状态。背景是:
我们实施了数据库管理。因此,如果用户创建了一个新数据库,vuex 存储需要动态知道这些。所以现在,我们有一个突变,它为每个数据库创建状态。
我有什么办法解决这个问题吗?我还是不知道:D
【问题讨论】:
-
我不具体了解 VueX,但也许 Vue.set() from this docs page on reactivity 可以帮助你。
-
酷,谢谢。好吧,在这里找到了一个有趣的短语:“Vue 无法检测到属性添加或删除”我想这是我的情况:D
-
它不能自己做,但使用
Vue.set(object, 'property', 'value')会使其反应。 -
一试——我试一试。我不确定实际上如何,但我会找到的
标签: javascript vue.js vuex nuxt.js