export const getSomethingEpic = action$ =>
action$
.ofType(GET_SOMETHING)
.switchMap(action =>
ajax('url/api/something')
.map((json) => {
return getSomethingEndAct(json.response);
})
.takeUntil(action$.ofType('@@router/LOCATION_CHANGE'))
);
状況は次のとおりです。
ページ A には反応ルーターがあります ページ B へのリンク、ページ B で componentDidMount getSomething アクションをディスパッチします。Ajaxは完全にキャンセルできます。ただし、ページ B がロードされて ajax が終了した場合、ページ B からページ C にルーティングし、ブラウザの戻るボタンを使用してページ B に再度ルーティングすると、再び componentDidMount でアクション getSomething がディスパッチされますが、今回は ajax がキャンセルされます。 .
場所の変更はgetSomethingアクションの前であるため、ajaxがキャンセルされる理由がわかりません。または、ルートが変更されたときにajaxをキャンセルするにはどうすればよいですか?
サンプルをビルドしようとしましたが、react-router-redux を取得してブラウザーの履歴を同期させることができませんでした。これはhttp://jsbin.com/dewixurece/edit?js,console,output です。hashHistory を使用すると機能しますが、2 つの場所変更アクションがあり、代わりに 1 つにする必要があり、その理由はわかりません。
これは素晴らしいライブラリであり、RX プログラミングのアイデアが本当に気に入っていますが、まだ学習中であり、より多くの例が得られることを願っています。誰かが助けてくれたらありがとう。