Да, вы можете использовать генераторы ES6 + в качестве создателей действий. Возможно, вам больше не понадобится redux-thunk.

использование

Чем могут помочь генераторы? Вы можете создавать объекты действия для их отправки! Без упаковки каждый раз с dispatch:

Когда вы вызываете генератор, его тело не выполняется, но вместо него возвращается объект iterator. Обычно создатели действий заключаются в dispatch вызов, поэтому итератор будет отправлен в магазин. Для обработки итераторов потребуется некоторое промежуточное программное обеспечение redux. Вот:



Это промежуточное ПО обрабатывает «следующие» объекты. Он вызывает метод next() итератора, и тело функции генератора выполняется шаг за шагом. Генератор выдает действия, и они отправляются в магазин.

Как можно получить государство? yield всегда возвращает новое состояние. Вы ничего не можете дать (undefined), если просто хотите получить текущее состояние (ничего не будет отправлено):

// Inside generator:
let state = yield;

or
const params = getParamsFromState(yield); // yield expression

Вы также можете return некоторые данные из генератора и получить их с помощью .then:

signIn().then(username => {
   console.log(username);
});

Дальнейший рефакторинг

Более того, если вы используете эту библиотеку: redux-action-creators

… Вы можете избавиться от констант типов и дополнительных действий, чтобы определить создателя действия в одном блоке кода:

Он своего рода «генерирует» подтипы для создателей ваших действий и является очень удобным инструментом.

Удачи с Redux!