Действия должны возвращать простые объекты, ваше действие fetchHistorySportsDatafromURL
возвращает функцию.Если вы сделаете свою функцию редуктора истории async
, то вы можете сделать асинхронную функцию, чтобы ваш вызов API был и возвращал результат в состояние.
Вызов API в редукторе
- Это работает, но не идеально, так как вы хотите, чтобы ваши редукторы были чистыми функциями, как, впрочем, без побочных эффектов, один и тот же ввод всегда производит то же самоеoutput
Вы также можете сделать запрос API в обработчике обратного вызова компонента асинхронно и передать результат отправленному действию.
Вызов API в компоненте затем отправляется в действии
- Это хорошее решение, которое отлично подходит для небольших проектов, но объединяет сетевую бизнес-логику с вашими компонентами отображения пользовательского интерфейса, что также не так идеально, поскольку снижает возможность повторного использования кода.
Если вы все еще хотите отделить свою логику API от вашего компонента (что хорошо), redux-thunk - это способ создания создателей асинхронных действий, которые яочень похоже на шаблон вашего исходного кода.
вызов API в действии с использованием redux-thunk
- Это наиболее идеальный вариант, поскольку он полностьюсвязывает бизнес-логику с вашим пользовательским интерфейсом, то есть вы можете изменять внутренние запросы, не касаясь внешнего интерфейса, и другие компоненты теперь могут использовать то же действие.Хороший СУХОЙ принципал.
Не совсем уверен, что вы хотите сделать с новым состоянием, но это должно привести вас к хорошему месту, чтобы справиться с этим в вашей функции mapStateToProps
.