使用Redux reducers

时间:2017-04-14 09:39:05

标签: javascript reactjs redux

我有以下结构。我有一个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是父对象中的属性?

谢谢。

1 个答案:

答案 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
   };