Сценарий: я хочу перенаправить пользователя или показать предупреждение на основе успеха, обратные вызовы ошибок после отправки действия.
Ниже приведен код с сокращением для задачи
this.props.actions.login(credentials)
.then((success)=>redirectToHomePage)
.catch((error)=>alertError);
потому что действие отправки в redux-thunk возвращает Promise, легко реагировать с ответом.
Но теперь я получаю свои руки грязными на саунд-редуксе и пытаюсь выяснить, как я могу достичь того же результата, что и код выше. поскольку Saga работает в другом потоке, я не могу получить обратный вызов из запроса выше. поэтому я просто хотел узнать, как вы, ребята, это делаете. или как лучше всего справиться с обратными вызовами при использовании саги саги? действие отправки выглядит следующим образом:
this.props.actions.login(учетные данные);
и сага
function* login(action) {
try {
const state = yield select();
const token = state.authReducer.token;
const response = yield call(API.login,action.params,token);
yield put({type: ACTION_TYPES.LOGIN_SUCCESS, payload:response.data});
yield call(setItem,AUTH_STORAGE_KEY,response.data.api_token);
} catch (error) {
yield put({type: ACTION_TYPES.LOGIN_FAILURE, error})
}
}
монитор саги
export function* loginMonitor() {
yield takeLatest(ACTION_TYPES.LOGIN_REQUEST,login);
}
создатель действий
function login(params) {
return {
type: ACTION_TYPES.LOGIN_REQUEST,
params
}
}