0

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...
}

または、このシナリオにアプローチする最善の方法は何でしょうか?

4

1 に答える 1

0

データを完全に再水和するのは良い習慣ではないと思います。

すべてのチームに対して何かを表示する場合は、各 id を子コンポーネントに渡します。これにより、セレクターを使用して必要なデータを取得できます。

または、データの異なる部分を必要とする計算を行っている場合は、完全に水和されたデータを返すのではなく、セレクター内でこれを行います。

于 2016-10-23T17:40:58.450 に答える