0

我正在使用重新选择从商店中获取我的数据。我维护一个列表,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...
}

或者处理这种情况的最佳方法是什么?

4

1 回答 1

0

我认为完全补充数据不是一个好习惯。

如果您要为所有团队显示某些内容,请将每个 id 传递给子组件,然后该子组件可以使用选择器获取所需的数据。

或者,如果您正在执行一些需要不同部分数据的计算,则在选择器内执行此操作,而不是返回完全水合的数据。

于 2016-10-23T17:40:58.450 回答