我无法让我的承诺在商店工作。
我通过动作调用突变,这似乎工作正常。
export const location = {
state: {
x: 0,
y: 0,
z: 0,
extent: [],
epsg: 'EPSG:3857'
},
mutations: {
setLocation(state, payload) {
// mutate state
console.log("Commit");
state.x = payload.x;
state.y = payload.y;
console.dir(state); //this does return the mutated state.
}
},
actions: {
setLocation(context, payload) {
console.dir(payload);
context.commit('setLocation', payload);
}
},
getters: {
mapLocation(state) {
return state
}
}
}
操作已导入到我的组件中:
methods: {
...mapActions(['setLocation']),
然后调用:
var location = {
x: data[0],
y: data[1]
}
this.setLocation(location);
这一切似乎都有效,但当我查看Vue Developer Tools时,Vuex Base状态保持不变,我有一个活跃的变异(setLocation)。我可以点击“全部提交”。提交有效的突变。
在我的组件中,我在getter mapLocation上使用了一个观察者,当我点击Commit All时,它会触发。
如何强制它提交商店?
由于
答案 0 :(得分:3)
好的,这实际上是一个非常简单的问题/疏忽。
我没有在我正在观看的计算属性上对DOM进行任何建模,因此它从未更新过。
所以解决方案就是使用v-model =“mapLocation”来确保手表触发。