redux-observableのepicで複数アクションを発行する

2019-01-20

rx についてまだあまり理解してないのだけれど、 redux-observable を使い始めた。 難しくてちゃんと rx の勉強をしないとな、と思ったのでそのうち時間が出来たらやっていきたい。

epicで複数アクションを発行する

import { Epic, ofType } from "redux-observable";
import { ajax } from "rxjs/ajax";
import { mergeMap, switchMap } from "rxjs/operators";

import { barAction, bazAction } from "../actions";
import { FOO_ACTION } from "../constants";

const API_URL = "APIのURLだよ";

export const fooActionEpic: Epic = action$ =>
  action$.pipe(
    ofType(FOO_ACTION),
    switchMap(action => {
      const body = "bodyだよ";
      const method = "POST";
      const headers = {
        Accept: "application/json",
        "Content-Type": "application/json"
      };
      return ajax
        .post(API_URL, body, headers)
        .pipe(
          mergeMap(res => [barAction(res.response), bazAction(res.response)])
        );
    })
);

大事なところは margeMap あたり。