Обрабатывать общий вызов API в разных редукторах

У меня есть сущность под названием client и еще один называется person,client имеет personId для его основного лица, и у нас также есть список людей, которые связаны с этим client каким-то образом. Что-то вроде следующего:

client: {
  clientId: 1
  personId: 1
  people: [{personId: 2}, {personId: 3}]
}

Предположим, у нас есть действие под названием REQUEST_PERSON, который отправляет RECEIVE_PERSON когда закончено, и два маршрута в пределах react-router-redux, client/:clientId/ а также client/:clientId/people/:personId что нужно для получения информации о человеке..

У меня есть два редуктора, один для первого маршрута и другой для второго. Если я слушаю RECEIVE_PERSON в обоих из них они всегда будут обновлять свое состояние, даже если действие не было предназначено для них.

Должен ли я иметь два разных действия для каждой ситуации, как REQUEST_CLIENT_PERSON/RECEIVE_CLIENT_PERSON а также REQUEST_PERSON/RECEIVE_PERSON что будет называть тот же маршрут API? Можно ли как-то избежать этого дублирования?

1 ответ

Решение

Краткий ответ: да, у вас должно быть два разных действия. Когда два разных редуктора слушают один и тот же тип действия, это очень редко то, что вы хотите сделать. Я говорю редко, потому что может быть случай, но я никогда не сталкивался с одним.

Более длинный ответ включает в себя, как сделать это, не повторяя себя. Если вы обнаружите, что ваши редукторы и действия делают одно и то же, и вы продублировали весь код, было бы целесообразно установить редуктор более высокого порядка, как описано в документации по редуксу.

Другие вопросы по тегам