2016-12-21 7 views
0

私のレデュックスストア内のデータをソートする際に問題があります。reduxストアのエンティティプロパティでIDをソート

マイストアは次のようになります。

私の減速機能で
state = { 
    ids: [1,2,3,4, /*...*/], 
    entities: { 
    1: { 
     id: 1, 
     time: 50 
    } 
    //... 
    } 
}; 

私は私のデータは、常にそれを毎回ソートする必要がなく、使用する準備ができてソートされ、このように、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}); 

エンティティ配列をエンティティの時間プロパティでソートするにはどうすればよいですか?

答えて

1

timeプロパティでソートするには、sort関数でさらに高度な処理を行う必要があります。

私は簡単な例を作った:

[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 
}) 

しかし、このアプローチは、状態のエンティティのリストがまだ更新されていないだろうので、アカウントに現在のアクションに接続されているすべての正規化されたエンティティを取るので、あなたはありません新しい状態を変数に代入し、新しい状態のエンティティに基づいてIDをソートし、次にLOAD_LIST_SUCCESSの結果としてそれを返します。

関連する問題