reselect を使用してストアからデータを取得しています。私はリストを管理してDivisions
おりTeams
、各ディビジョンにはチームのリストがあります。また、アクティブなディビジョンの記録を保持し、それらを配列に保持しますactiveIds
。
基本的に私はこのツリー構造を持っています:
const divisions = {
activeIds: [], // this contains the selected division IDs
list: {
1: {
name: 'Division 1',
teams: [1,2,3]
}
2: {
name: 'Division 2',
teams: [4,5,6]
}
// and so on...
}
}
const teams = {
1: { name: 'Team 1' }
// and so on...
}
getActiveDivisions
配列を反復処理し、activeIds
それを分割データで水和するセレクターがあり、結果は次のとおりです。
// if activeIds contain [1,3]
const activeDivisions = {
1: {
name: 'Division 1',
teams: [1,2,3]
}
3: {
name: 'Division 3',
teams: [7,8,9]
}
}
getActiveDivisionsWithTeams
ここで、基本的にツリーと同じ構造を取得するセレクターを作成したいと思いましたが、activeDivisions
チームは水和されています。たとえば、次のようになります。
const activeDivisionsWithTeams = {
1: {
name: 'Division 1',
teams: {
1: { name: 'Team 1' },
2: { name: 'Team 2' },
3: { name: 'Team 3' }
}
}
// and so on...
}
それとも、水分補給されたチームがあるディビジョン用に別のリストを保持する必要がありますか?
// Notice there is no `name` on division entry
const activeDivisionsWithTeams = {
1: {
teams: {
1: { name: 'Team 1' },
2: { name: 'Team 2' },
3: { name: 'Team 3' }
}
}
// and so on...
}
または、このシナリオにアプローチする最善の方法は何でしょうか?