Насколько я знаю и исправляю меня, если я ошибаюсь, redux-thunk - это промежуточное ПО, которое помогает нам отправлять асинхронные функции и отлаживать значения в самом действии, в то время как, когда я использовал redux-обещание, я не мог создавать асинхронные функции без реализации моих собственных механизм, поскольку действие генерирует исключение отправки только простых объектов.
В чем основные различия между этими двумя пакетами? Есть ли какие-то преимущества от использования обоих пакетов в одном приложении для реагирования на страницу или достаточно использовать redux-thunk?
источник
Скорее всего, вы захотите / вам понадобятся оба вместе в вашем приложении. Начните с redux-prom для рутинных асинхронных задач по созданию обещаний, а затем увеличивайте масштаб, добавляя Thunks (или Sagas и т. Д.) По мере увеличения сложности :
redux-promise
это улучшит вашу жизнь и упростит ее, быстро и легко. (Вкратце, вместо того, чтобы думать об «разворачивании» своих обещаний, когда они разрешаются, а затем записывать / отправлять результаты, redux-prom (-middleware) позаботится обо всех этих скучных вещах за вас.)В этих случаях преимущество
redux-thunk
состоит в том, что он позволяет вам инкапсулировать сложность внутри вашего создателя действия .Но обратите внимание, что если ваш Thunk создает и отправляет обещания, вы захотите использовать обе библиотеки вместе :
redux-promise
затем обработает разворачивание в редукторе (ах) отдельных обещаний, сгенерированных вашим Thunk, чтобы избежать шаблонного, который влечет за собой. ( Вместо этого вы могли бы делать все в Thunks, сpromise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
... но зачем вам это?)Еще один простой способ суммировать разницу в вариантах использования: начало и конец цикла действий Redux :
redux-promise
предназначен для конца вашего потока, когда все было сведено к простым обещаниям, и вы просто хотите их развернуть и сохранить их разрешенное / отклоненное значение в магазинеПРИМЕЧАНИЯ / ССЫЛКИ:
redux-promise-middleware
что это более полная и понятная реализация идеи, лежащей в основе оригиналаredux-promise
. Он находится в стадии активной разработки, а также хорошо дополненredux-promise-reducer
.redux-saga
, которое очень похоже наredux-thunk
, но основано на синтаксисе функций генератора. Опять же, вы, вероятно, использовали бы его вместе сredux-promise
.источник
Полное раскрытие: я относительно новичок в разработке Redux и сам боролся с этим вопросом. Перефразирую самый емкий ответ, который я нашел:
ReduxPromise возвращает обещание в качестве полезной нагрузки при отправке действия, а затем промежуточное программное обеспечение ReduxPromise работает, чтобы выполнить это обещание и передать результат редуктору.
ReduxThunk, с другой стороны, заставляет создателя действия отложить фактическую отправку объекта действия редукторам до тех пор, пока не будет вызвана отправка.
Вот ссылка на руководство, в котором я нашел эту информацию: https://blog.tighten.co/react-101-part-4-firebase .
источник