Асинхронный поток
Без мидлвара (middleware) Redux стор поддерживает только синхронный поток данных. Это то, что вы получаете по умолчанию с createStore()
.
Вы можете расширить createStore()
с помощью applyMiddleware()
. Это не обязательно, но это позволит вам выразить асинхронные экшены в удобном виде.
Асинхронный мидлвар, типа redux-thunk или redux-promise, оборачивает метод стора dispatch()
и позволяет вам вызывать что-то, что не является экшеном, например, функции или Промисы. Любые мидлвары, которые вы используете, могут интерпретировать все, что вы вызываете, и, в свою очередь, могут передать экшены следующему мидлвару в цепочке. Например, мидлвар промисов (Promise middleware) может перехватывать промисы и отправлять пару начало/конец экшенов асинхронно в ответ на каждый промис.
Когда последний мидлвар в цепочке отправляет экшен, он должен быть простым объектом. Дальше в дело вступает синхронный поток данных Redux.
Изучите полные исходные коды асинхронного примера.
Следующие шаги
Сейчас вы видели пример того, что мидлвар может сделать в Redux. Пришло время узнать, как это на самом деле работает и как вы можете создать свой собственный. Перейдите к следующему подробному разделу о мидлваре.