我在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数组进行排序?
答案 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
})
案例的结果返回。