【发布时间】:2020-03-22 10:44:36
【问题描述】:
我正在尝试使用 electron-vue 样板构建一个带有 VueJS 的 Electron 应用程序。我有一个突变,它根据接收到的有效负载更新部分状态。
然而,在动作调用和突变之间的某个地方,payload.myItem.id 属性会无意识地发生变化。
该动作由 Vue 模态组件调用:
handleModalSave() {
let payload = {
layerId: this.layer.id,
myItem: {
id: this.editLayerForm.id,
text: this.editLayerForm.text
}
}
console.log('save', payload.myItem.id)
this.$store.dispatch('addLayerItem', payload)
}
这里说的是动作和突变:
// Action
addLayerItem: ({ commit }, payload) => {
commit('ADD_LAYER_ITEM', payload)
}
// Mutation
ADD_LAYER_ITEM: (state, payload) => {
console.log('mutation', payload.myItem.id)
let layer = state.map.layers.find(layer => layer.id === payload.layerId)
if (payload.myItem.id !== '') {
// Existing item
let itemIdx = layer.items.findIndex(item => item.id === payload.myItem.id)
Vue.set(layer.items, itemIdx, payload.myItem)
} else {
// New item
payload.myItem.id = state.cnt
layer.items.push(payload.myItem)
}
}
据我所知,没有命令可以在 console.log('save', payload) 和 console.log('mutation', payload) 之间更改 myItem.id。我使用严格模式,所以没有其他函数可以改变突变之外的值。
编辑
我更新了 console.logs() 以直接显示属性而不是对象引用。
【问题讨论】:
-
动作是什么样的?在调度调用和我们在这里缺少的突变之间有一个层。
-
@Dr_Derp 我加了action,没有特别的逻辑
标签: javascript vue.js electron vuex electron-vue