У меня есть состояние типа массив, который изначально выглядит так:
const initialState = {
spots: []
}
При первом обновлении оно заполняется объектами и выглядит так:
state.spots = [
{ id: '1', available: 1, path: 'xxx' },
{ id: '2', available: 1, path: 'xxz' },
{ id: '3', available: 1, path: 'xxy' },
{ id: '4', available: 1, path: 'bxy' },
{ id: '5', available: 1, path: 'vxy' },
{ id: '6', available: 1, path: 'fxy' }
]
Во всех последующих обновлениях мы получаем все точки с ключами 'id' и 'available', но не с путем.
Таким образом, полезная нагрузка выглядит следующим образом:
payload = [
{ id: '1', available: 1 },
{ id: '2', available: 0 },
{ id: '3', available: 0 },
{ id: '4', available: 1 },
{ id: '5', available: 0 },
{ id: '6', available: 1 }
]
Я пытаюсь выяснить неизменный паттерн ES6, чтобы обновить состояние, но, похоже, не могу понять, что это правильно.
EDIT:
Лучшее решение, которое я нашел до сих пор, это следующее:
state.spots = state.spots.map( (spot, key) => {
let new_spot = payload.find(o => o.id === spot.id);
return { ...spot, ...new_spot }
})
Какой самый эффективный способ корректно обновить все объекты массива «пятна» с новой полезной нагрузкой.
Надеюсь, это понятно.
Спасибо