Vue.js 使用vuex更新数组的所有对象属性
我正在尝试使用vuex从数组更新对象的单个属性 这是我存储文件中的代码Vue.js 使用vuex更新数组的所有对象属性,vue.js,vuejs2,vuex,Vue.js,Vuejs2,Vuex,我正在尝试使用vuex从数组更新对象的单个属性 这是我存储文件中的代码 export default{ namespaced: true, state: { customers: null, }, mutations: { UPDATE_MODIFIED_STATE(state, value) { state.customers = [ ...state.customers.filter(item => item.Id !== v
export default{
namespaced: true,
state: {
customers: null,
},
mutations: {
UPDATE_MODIFIED_STATE(state, value) {
state.customers = [
...state.customers.filter(item => item.Id !== value.Id),
value,
];
},
},
下面的代码来自我的.vue文件
如您所见,我想更新对象的IsModified属性。
它工作得非常好。它正在更新每个客户对象的属性
只是想确定一下,这是更新数组对象的正确方法还是我应该使用的方法
如果是,我应该使用Vue.set,那么我在这里如何使用它。您实际上不是在修改数组,您要做的是用筛选函数和传递的值生成的新数组替换原始数组。因此,在您的示例中,不需要使用Vue.set 您可以在中找到有关替换阵列的详细信息 但是,当您直接使用索引设置项或修改数组的长度时,就会开始注意事项。执行此操作时,数据将不再是反应性的,您可以阅读更多关于此的信息
例如,在变异中考虑以下内容:
// If you update an array item like this it will no longer be reactive.
state.customers[0] = { Id: 0, IsModified: true }
// If you update an array item like this it will remain reactive.
Vue.set(state.customers, 0, { Id: 0, IsModified: true })
// If you update an array item like this it will no longer be reactive.
state.customers[0] = { Id: 0, IsModified: true }
// If you update an array item like this it will remain reactive.
Vue.set(state.customers, 0, { Id: 0, IsModified: true })