У меня есть форма, которая должна реактивно обновлять весь объект в массиве объектов с изменением состояния. Я знаю, 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))