1
 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 プログラミングのアイデアが本当に気に入っていますが、まだ学習中であり、より多くの例が得られることを願っています。誰かが助けてくれたらありがとう。

4

1 に答える 1