После того, как пользователь нажимает кнопку входа в форму, я хочу отправить действие, которое вызовет вращение в форме, когда запрос завершится.
Я пробовал решение, опубликованное по этому вопросу, но я получаю сообщение об ошибке наблюдаемые при редуксе действия по отправке
Вот действие, которое отправляется, когда пользователь нажимает кнопку входа в систему:
dispatch(startLoginEpic({ login: loginData, from }));
Вот мой эпос:
const LoginEpic = (action$, state$) =>
action$.pipe(
ofType(types.START_LOGIN_EPIC),
// map(() =>
// loginLoadBegin()),
switchMap((action) =>
from(Api.login(action.loginData))
.pipe(
map(({ data: { loginQuery: { id } } }) =>
setSession({ sessionId: id })),
catchError((error) =>
{
if (invalidSessionHelper(error))
{
return of(logOut());
}
return of({
type: 'LOGIN_EPIC_ERROR',
payload: {
error: error.message,
},
});
}),
)),
);
edit: с помощью @ mpx2m:
const LoginEpic = (action$, state$) =>
action$.pipe(
ofType(types.START_LOGIN_EPIC),
switchMap((action) =>
concat(
of(loginLoadBegin()),
from(Api.login(action.loginData))
.pipe(
flatMap(({ data: { loginQuerdy: { id } } }) =>
concat(
of(setSession({ sessionId: id })),
of(loginLoadError()),
)),
catchError((error) =>
{
if (invalidSessionHelper(error))
{
return of(logOut());
}
return of({
type: 'LOGIN_EPIC_ERROR',
payload: {
error: error.message,
},
});
}),
),
)),
);