我正在尝试使用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)
}
}
据我所知,没有命令可以在和myItem.id
之间切换。我使用严格模式,因此没有其他函数可以更改突变之外的值。console.log('save', payload)
console.log('mutation', payload)
编辑
我更新了 console.logs() 以直接显示属性而不是对象引用。