我想通过突变将属性添加到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
获得新值,则组件不会渲染它。
如果我已将anotherProp
定义为固定状态,则它是反应性的。我可以想象为什么。我猜测Vue的反应性需要知道其数据,因此它知道要听哪些更改。
但是我该怎么办?我真的需要通过突变添加状态。背景是:
我们实现了数据库管理。因此,如果用户创建新数据库,则vuex存储需要动态地知道这些。所以现在,我们有了一个突变,它为每个数据库创建状态。
有什么办法吗?我还是不知道:D
答案 0 :(得分:2)
正如刘易斯和vuex mutations rules所说,商店初始化时所有前期恶魔都应该存在。
一个简单的解决方案是初始化一个包含所有所需属性的前期属性。例如:
export default () => ({
data: {
Prop1: '1',
Prop2: '2'
}
})
执行此操作可以使用:
Vue.set(data, 'anotherProp', 'what ever')
或
state.data = { ...state.data, 'anotherProp': 'what ever' }
答案 1 :(得分:0)
这里是创建State Property的突变,我尝试整合以使该Prop对Vue具有反应性
更新-------------------------------------------- >
// mutation.js
import Vue from 'vue'
export default {
stateUpdate (state, target) {
Vue.set(state, target.t, target.data);
},
}
这就是我需要的,因为我在Vuex Store本身(而不是通过组件)中需要mutate
和set
。
感谢您的帮助:)