我正在使用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
数组迭代并将其与Division数据结合,结果是:
// 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...
}
或者处理这种情况的最佳方法是什么?
我不认为这是一个很好的做法,充分补充你的数据。
如果你要为所有的团队显示一些东西,把每个id传递给一个子组件,然后它可以使用一个选择器来获取它需要的数据。
或者如果你正在做一些计算,需要不同的数据部分,然后在选择器中做这个,而不是返回完全含水的数据