在NGRX / Redux存储中更新数组中对象的属性不起作用

时间:2018-05-16 02:46:20

标签: javascript angular reactjs redux ngrx

在我的Reducer中,我试图更新字典集合中保存的数组中对象的属性,但它不起作用,我无法弄清楚原因。我的状态的results属性是键/值对的字典,值是数组。

我尝试使用map函数创建一个新数组,但我的结果和状态不会更新。这是我的代码:

 case LOAD_SUCCESS: {
      const form = (action as LoadSuccessAction).form;

      return {
         results: {
           ...state.results,
           ...state.results['FORMS'].map(item => 
             item.id === form .id
              ? {...item, 'categories': form.categories}
              : item)           
         },    
        loading: false,
        loaded: true
      };
    } 

我做错了什么?

1 个答案:

答案 0 :(得分:0)

下面:

$ docker build <all the other args> --network host .
$ docker run <all the other args> --network host .

您正在将更新项目的数组(已更新...state.results['FORMS'].map(…), )与州的FORMS属性(包含{{1}的对象)合并})。

如果项目的类别和ID是数字,最终结果将如下所示(仅显示results):

FORMS

相反,您应该将新状态的results属性设置为更新的数组:

{
    '0': { categories: 15, id: 10 },
    '1': { categories: 7, id: 11 },
    FORMS: [ /* its original content before the update */ ],
}