У меня есть приложение реагирования, использующее избыточность с объектом состояния, которое выглядит следующим образом:
{
personal: { firstName: 'Lance', lastName: 'Uppercut' },
phones: [
{ id: 1, number: '111-222-3333' },
{ id: 2, number: '444-555-6666' }
]
}
Скажем, что произошло действие, которое изменило только свойство personal
, оставив только phones
.Нужно ли копировать весь массив phones
в редуктор, или можно оставить указатель на старый массив, поскольку он не изменился?
Другими словами, все в порядке?
return Object.assign({}, state, {
personal: { firstName: 'Rock', lastName: 'Strongo' },
phones: state.phones
});
или мне тоже нужно скопировать массив?
return Object.assign({}, {
personal: { firstName: 'Rock', lastName: 'Strongo' },
phones: state.phones.map(p => Object.assign({}, p))
});
Это также относится к ссылкам на объекты.Если phones
где такой вложенный объект, как этот
{
personal: { firstName: 'Lance', lastName: 'Uppercut' },
phones: {
'1': { number: '111-222-3333', areaCode: '619' },
'2': { number: '444-555-6666', areaCode: '512' }
}
}
, можно ли добавить новый объект состояния, указывающий на ссылку на старый?