Обновить весь объект в массиве объектов в хранилище Vuex с помощью Vue.set ()? - PullRequest
0 голосов
/ 09 января 2019

У меня есть форма, которая должна реактивно обновлять весь объект в массиве объектов с изменением состояния. Я знаю, Vue.set() хорошо работает для обновления одного свойства, но мне любопытно, работает ли оно просто для обновления всего объекта. Как то так:

Vue.set(state.objects, obj.id, newObject)

Вариант использования будет для обновления формы, где измененные свойства будут несовместимы. Я также могу просто неправильно понять Vue.set(). Документы очень краткие об этом, говоря только:

При добавлении новых свойств к объекту вы должны либо:

Использовать Vue.set (obj, 'newProp', 123) или

Замените этот объект на новый. Например, используя синтаксис распространения объекта, мы можем написать его так:

state.obj = { ...state.obj, newProp: 123 }

Буду очень признателен за любые советы о том, как лучше всего это сделать!

Ранее я обновлял объект, находя индекс и заменяя его, но, похоже, ему не хватало реактивности. Пример:

let index = state.objects.findIndex(o => o.id === obj.id)
if (index !== -1) {
  state.objects[index] = new Object(obj)
  return
}
state.objects.push(new Object(obj))
...