Вполне нормально ввести dispatch
в создателя действий и использовать его для того, что вам нужно.
Аутсорсинг дополнительной логики из ваших компонентов в ваши действия (или ваше промежуточное программное обеспечение) - это действительно хорошая вещь, если вы планируете использовать эту логику в разных местах. абсолютно законно , что логика внутри ваших действий может также включать асинхронные операции (как в вашем случае), которые откладывают отправку или операции, которые отправляют несколько других действий. В случае избыточного звука это называется состав .
Ваше решение в некотором роде является «ярлыком» по сравнению с «redux-thunk-way», где ваш thunk сначала проходит через промежуточное ПО, а затем управление будет немедленно инвертировано избыточным-thunk. С помощью redux-thunk вы также можете получить инъекцию getState
, кроме dispatch
, что дает вам прямой доступ ко всему магазину (без redux-thunk вам придется прибегнуть к mergeProps в вашем компоненте, чтобы иметь доступ как к хранилищу, так и к отправке одновременно).
Кроме того, привязка dispatch
к вашим действиям более стандартизирована с помощью redux-thunk, который использует каррирование, поэтому он будет меньше шаблонного кода внутри вашего mapDispatchToProps
и будет выглядеть чище (поскольку вам не нужно вводить dispatch
каждый раз себя).