使用选择器组合嵌套结果



我正在使用reselect从存储中获得我的数据。我保留了DivisionsTeams的列表,每个赛区都有自己的球队列表。我也保存活动的除法的记录,并将它们保存在一个数组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传递给一个子组件,然后它可以使用一个选择器来获取它需要的数据。

或者如果你正在做一些计算,需要不同的数据部分,然后在选择器中做这个,而不是返回完全含水的数据

相关内容

  • 没有找到相关文章

最新更新