Реакционно-эталонный вложенный Redux States - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть запрос о вложенных состояниях Redux в React Boilerplate , и я был бы очень признателен, если бы кто-нибудь помог мне разобраться с этим.

Надеюсь, это будет достаточно просто, так как это фундаментальный вопрос.

В соответствии с документацией о редуксе, наиболее целесообразно хранить состояние редукса как домены.

{
    simpleDomainData1: {....},
    simpleDomainData2: {....},
    entities : {
        entityType1 : {....},
        entityType2 : {....}
    },
    ui : {
        uiSection1 : {....},
        uiSection2 : {....}
    } 
}

Как достичь этой государственной структуры в react-boilerplate? Я создавал свои Контейнеры, используя встроенные генераторы, и держал их все на одном уровне, например:

App
|__ Components
|__ Containers
      |__ Container1
      |__ Container2
      |__ Container3
      |__ Container4
      :
      :

Мое избыточное состояние супер нормализовано, вот так:

{
  route: {
    location: {
      ....
    }
  },
  container1: {
    data: {}
  },
  container2: {
    data: {}
  },
  container3: {
    data: {}
  },
  container4: {
    data: {}
  }
}

Но сейчас я нахожусь в месте, где мне нужно вкладывать контейнеры 2 и 3 в контейнер 1 (согласно бизнес-логике). Как я могу также отражать эту структуру в моем магазине редуксов?

{
  route: {
    location: {
      ....
    }
  },
  container1: {
    data: {
          container2: {
                 data: {...}
           },
           container3: {
                data: {...}
           },
       }
  },
  container4: {
    data: {}
  }
}

Как мы можем использовать injectReducer для реализации вложенных состояний? Или есть другой подход, который вы все используете? ТИА !!

  • Я попытался настроить все редукторы для Container1, определенные в /Container1, что дало мне контроль над всем состоянием, но это похоже на анти-шаблон

  • Я еще не пробовал вложить Containers 2 и 3 в Container1, потому что я не мог понять, как утилита injectReducer будет работать в этих обстоятельствах.

(я также опубликовал это на Gitter)

...