Я видел соответствующий пост об этой проблеме, но мои настройки немного отличаются, поэтому у меня пока нет решения.
У меня есть этот создатель действия и эпопея:
export const postToSendEmail = (emailBody: any) => ({ type: EMAIL.POST_EMAIL, payload: emailBody });
export const sendEmailEpic = (action$: any) => action$.pipe(
ofType(EMAIL.POST_EMAIL),
mergeMap((action: any) =>
return Observable.ajax({
url: "http://...",
body: action.payload,
...
}).flatMap(() => of(sendEmailDone()))
),
catchError((error: any, source: any) => {
// this doesn't work
of(handleError(error));
// this restarts the epic
return source;
})
);
В компоненте реагирования у меня есть кнопка, которая просто вызывает actionCreator:
<button onClick={this.sendEmail}>send email</button>
sendEmail() {
this.props.dispatch(postToSendEmail({ test: "test" }));
}
Щелчок по кнопке в первый раз работает нормально, и я вижу вызов API в сети, но повторное нажатие на нее никогда не срабатывает. Почему это так?
EDIT:
Я обновил улов, но теперь, как мне отправить нужное мне действие? Использование of (handleError), похоже, на самом деле не вызывает его.