我看到了有关此问题的相关文章,但是我的设置有点不同,所以我还没有解决方案。
我有这个动作的创造者和史诗:
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;
})
);
在react组件中,我有一个仅调用actionCreator的按钮:
<button onClick={this.sendEmail}>send email</button>
sendEmail() {
this.props.dispatch(postToSendEmail({ test: "test" }));
}
第一次单击该按钮可以正常工作,我在网络中看到api调用,但是第二次单击则永远不会触发。为什么会这样?
编辑:
我更新了渔获,但是现在,我该如何调度我需要的动作?似乎没有实际使用of(handleError)。