Обрабатывать общий вызов 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 ответ
Краткий ответ: да, у вас должно быть два разных действия. Когда два разных редуктора слушают один и тот же тип действия, это очень редко то, что вы хотите сделать. Я говорю редко, потому что может быть случай, но я никогда не сталкивался с одним.
Более длинный ответ включает в себя, как сделать это, не повторяя себя. Если вы обнаружите, что ваши редукторы и действия делают одно и то же, и вы продублировали весь код, было бы целесообразно установить редуктор более высокого порядка, как описано в документации по редуксу.