在redux store

时间:2016-12-21 19:01:35

标签: sorting redux ngrx

我在redux-store中对数据进行排序时遇到问题。

我的商店看起来像这样:

state = {
  ids: [1,2,3,4, /*...*/],
  entities: {
    1: {
      id: 1,
      time: 50
    }
    //...
  }
};

在我的reducer函数中,我想对id进行排序,这样我的数据总是可以排序并准备好使用,而不需要每次都对它进行排序:

case LOAD_LIST_SUCCESS:
  return Object.assign({}, state,
    {ids: [state.ids, ...action.payload.normalized.result].sort()}, //Here is my problem...
    {entities: [...state.entities, ...action.payload.normalized.entities.items});

如何通过实体时间属性对ids数组进行排序?

1 个答案:

答案 0 :(得分:2)

要按func_call(DATA1[3:0])属性进行排序,您需要使用sort函数执行更高级的操作。

我做了一个简单的例子:

time

但是,此方法不会考虑附加到当前操作的任何规范化实体,因为状态的实体列表尚未更新,因此您可能需要将新状态分配给变量,然后根据ID对其进行排序处于新状态的实体,然后作为[state.ids, ...action.payload.normalized.result].sort((id1, id2) => { const entity1 = state.entities[id1] const entity2 = state.entities[id2] if (entity1.time < entity2.time) { return -1 } if (entity1.time > entity2.time) { return 1 } return 0 }) 案例的结果返回。