私はredux-observableを使用して、ディスパッチアクションとストアの間のミドルウェアとして動作しています。私はこれを達成するためにrxjs sample
関数を使用しようとしていますが、残念ながらそれは私のために働いていません。ここに私の叙事詩だ:他のアクションをlistenするためにredux-observable内のrxjsサンプルを使用
export const inviteUserEpic = (action$) => {
return action$.ofType(a.INVITE_USER)
.flatMap(({ body }) => {
return Observable.concat(
Observable.of({ type: authActions.REGISTER_REQ, body }),
Observable.of(push(`/team/${body.teamId}`))
.sample(action$.ofType(authActions.REGISTER_SUCCESS))
);
});
};
基本的な考え方は、新規ユーザーを登録するための複数の場所があることであり、この場合には、私は私が成功したユーザーを登録した後、チームのページにリダイレクトします。私は、REGISTER_REQが放出されているのを見て、その後、REGISTER_SUCCESSを放出します。しかし、リダイレクトオブザーバブルは決してサンプリングされません。
@Jake Dluhyおそらく 'REGISTER_SUCCESS'を永遠に聞きたいとは言わなかったのですが、その場合は' .take(1) 'を追加して最初の一致。私はそれに応じて私の答えを編集しました。 – jayphelps
ありがとう!私が思ったもう一つのことは、リクエストが失敗した場合にリダイレクトをキャンセルしたいということです。私は '.takeUntil(action $ .ofType(authActions.REGISTER_FAILURE))'を追加しました。これはうまくいくようです。 –
うん、それは完璧です。 – jayphelps