Например. для определенных действий я хочу, чтобы редукторы обрабатывали его раньше, чем это сделают эпики. И наоборот для других действий. Есть ли способ сделать это?
В redux-observable, как я могу контролировать, реагируют ли редукторы или эпики первыми на действие?
Ответы (2)
Насколько я вижу, вы не можете изменить это - редукторы всегда будут запускаться первыми. соответствующий кусок redux-observable а> это:
return action => {
const result = next(action);
input$.next(action);
return result;
};
Промежуточное программное обеспечение всегда сначала передает действие следующему промежуточному программному обеспечению в конвейере, что приводит к тому, что оно достигает редукторов. Только после того, как оно возвращается, оно подает действие в эпос. Redux-Saga делает то же самое.
Для любого действия, которое вы хотите, чтобы эпик выполнялся перед редуктором, сделайте 2 действия.
Действие A: Отправьте это в приложении, следите за ним в эпике. Ничего не делайте с ним в редукторе, если это уместно.
Действие B: Отправьте это в Epic, если действие A соответствует правильным условиям. Обращайтесь с этим в редукторе.
FETCH_USERS
, которое создает сетевой запрос. Когда сетевой запрос завершается, отправляетсяFETCH_USERS_FULFILLED
, и редюсер добавляет выбранных пользователей в список пользователей для отображения. Также есть действиеFILTER_USERS
, которое повторно используетFETCH_USERS
для получения списка пользователей, но с применением фильтров. Однако, прежде чем редуктор добавит выбранных пользователей, я хочу очистить список отображаемых пользователей. Таким образом, для фильтрации выбранные пользователи заменяют существующих, а не добавляются к ним. (продолжение) - person Leo Jiang   schedule 11.07.2017