我有以下结构。我有一个Company
对象,其中包含数组中的许多Person
个对象。
companies: CompanyInterface = {
persons: PersonInterface[] = []
}
我试图在桌子上展示属于这家公司的人。但是,当我向人员阵列添加/删除人员时,它应该自动更新。
现在我的减速机看起来像这样:
// Initial state
companies: CompanyInterface[];
// Reducer
case Constants.GLOBAL_COMPANY_ADD_PERSON:
[action.payload.person].concat(state.companies.filter(company => company.id === action.payload.id)[0].persons));
return {
...state
};
虽然我可以正确验证concat是否正常工作(当我对其进行日志记录时,我可以看到[Person]
)但它不会更新商店中的任何内容。
那么在Redux中更新数组的最佳方法是什么?Redux是父对象中的属性?
谢谢。
答案 0 :(得分:-1)
您可能需要查看Array.prototype.concat
,因为它不会改变阵列,而是returns a new array。在你的例子中,你没有改变状态。
相反,您需要将旧值替换为新值。例如:
case 'ADD_ELEMENT':
const { elements: previousElements } = state;
const newElement = action.payload;
const newElements = previousElements.concat(newElement)
return {
...state,
elements: newElements
};