Vuex - 在突变中更新对象
Vuex - update object in mutation
用户单击按钮后,我想用本地对象中的数据替换 vuex 存储中的数据。但我被困在突变中。这是一些代码以获取更多详细信息。
这是在用户单击按钮后调用的方法。
(this.tableview是一个本地对象,与vuex对象具有相同的值)
updateVuexTableview() {
// eslint-disable-next-line no-console
console.log("Update Vuex Table view");
this.updateTableview(this.tableview)
}
在这个方法中我的 vuex 动作被调用。看起来像这样:
(updTableview是我要插入的新数据)
async updateTableview({commit}, updTableview) {
const response = await axios.put(
`http://localhost:3000/tableview`,
updTableview
);
// eslint-disable-next-line no-console
console.log(response.data);
commit('updateTableviewMut', response.data);
},
这就是所谓的突变。那就是我被困的地方。我试图弹出数据并再次推送它,但到目前为止没有任何效果。
updateTableviewMut: (state, updTableview) => {
state.tableview.push(updTableview)
},
这是我的状态:
const state = {
tableview: {
"thema_c": true,
"status_c": true,
"priority_c": true,
"custom1_c": true,
"custom2_c": true,
"customFieldName1": "Custom1",
"customFieldName2": "Custom2"
},
};
您不能通过 .push
更新对象,您必须重新分配对象或设置特定字段。
只需像这样更改您的代码:
如果你想添加一个键值对,你可以这样做:
updateTableviewMut: (state, updTableview) => {
state.tableview['keyname'] = updTableview
}
或者,如果您想重新分配一个对象,您可以这样做:
updateTableviewMut: (state, updTableview) => {
state.tableview = updTableview
}
用户单击按钮后,我想用本地对象中的数据替换 vuex 存储中的数据。但我被困在突变中。这是一些代码以获取更多详细信息。
这是在用户单击按钮后调用的方法。 (this.tableview是一个本地对象,与vuex对象具有相同的值)
updateVuexTableview() {
// eslint-disable-next-line no-console
console.log("Update Vuex Table view");
this.updateTableview(this.tableview)
}
在这个方法中我的 vuex 动作被调用。看起来像这样: (updTableview是我要插入的新数据)
async updateTableview({commit}, updTableview) {
const response = await axios.put(
`http://localhost:3000/tableview`,
updTableview
);
// eslint-disable-next-line no-console
console.log(response.data);
commit('updateTableviewMut', response.data);
},
这就是所谓的突变。那就是我被困的地方。我试图弹出数据并再次推送它,但到目前为止没有任何效果。
updateTableviewMut: (state, updTableview) => {
state.tableview.push(updTableview)
},
这是我的状态:
const state = {
tableview: {
"thema_c": true,
"status_c": true,
"priority_c": true,
"custom1_c": true,
"custom2_c": true,
"customFieldName1": "Custom1",
"customFieldName2": "Custom2"
},
};
您不能通过 .push
更新对象,您必须重新分配对象或设置特定字段。
只需像这样更改您的代码:
如果你想添加一个键值对,你可以这样做:
updateTableviewMut: (state, updTableview) => {
state.tableview['keyname'] = updTableview
}
或者,如果您想重新分配一个对象,您可以这样做:
updateTableviewMut: (state, updTableview) => {
state.tableview = updTableview
}