【发布时间】:2019-04-22 00:30:49
【问题描述】:
我有一个使用 redux 的反应应用程序,其状态对象如下所示:
{
personal: { firstName: 'Lance', lastName: 'Uppercut' },
phones: [
{ id: 1, number: '111-222-3333' },
{ id: 2, number: '444-555-6666' }
]
}
假设发生的操作仅更改了 personal 属性,而单独留下了 phones。我是否必须将整个 phones 数组复制到 reducer 中,还是可以让它指向旧数组,因为它没有改变?
也就是说,这样可以吗?
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' }
}
}
可以让新状态对象指向旧状态对象的引用吗?
【问题讨论】:
标签: reactjs redux react-redux copy state