【发布时间】:2021-01-13 17:37:42
【问题描述】:
当我选择要编辑的对象时,vuex 存储会创建该对象的工作副本,以使重置为初始对象状态成为可能。
初始加载突变如下所示(当我在表格网格中选择一个对象时):
@Mutation
private [MutationTypes.LOAD_OBJECT_DETAILS_SUCCESS](object: ObjectDetailViewModel) {
Vue.set(this.State.detail, 'initalObject', object);
Vue.set(this.State.detail, 'workingCopyofObject', cloneDeep(object));
}
我正在使用 loadash CloneDeep 方法,但是当我使用普通 js 对象副本时遇到同样的失败,例如:JSON.parse(JSON.stringify(router)))。
现在,当我尝试更新对象的工作副本时,Vue.Set 方法也会更新我的初始对象。
@Mutation
private [MutationTypes.UPDATE_WORKINGCOPY_Object](updateProp: KeyValuePair) {
Vue.set(this.State.detail.workingCopyofObject, updateProp.key, updateProp.value);
}
所以当我调用我的重置突变时,我不会得到我的初始值:
@Mutation
private [RouterMutationTypes.DISCARD_WORKINGCOPY_CHANGES]() {
Vue.set(this.State.detail, 'workingCopyofObject', this.State.detail.initalObject); // initialObject already contains the changes of the working copy
}
也许我只是错过了一些关于 Vue.set 方法应该如何工作的内容。
最好的问候,
芬恩
【问题讨论】:
标签: javascript typescript vue.js vuex state-management