灵感はredux-observableから来ていますが、使用中に非常に不便だと感じました。なぜアクションを入力してアクションを出力する必要があるのでしょうか?これは非常に不便に感じます。このストリームの末尾で他のアクションをトリガーしたくありません。そのため、自分で改造版を作りました:
サンプルコード#
const streamerMiddleware = createStreamMiddleware()
const store = createStore(reducers, applyMiddleware(streamerMiddleware))
streamerMiddleware.run(
combineStreamers((observable$, api) =>
observable$
.pipe(
filterAction(FetchTypes.FETCH_START),
throttleTime(500),
dispatchAction({ type: FetchTypes.SET_LOADING, payload: true }),
delay(1000),
mergeMap(() => from(fetcher().then((response) => response.json()))),
)
.subscribe({
next: (result) => {
if (result) {
api.dispatch({ type: FetchTypes.FETCH_DONE, payload: result })
}
},
error: (err) => {
console.log(err)
api.dispatch({ type: FetchTypes.FETCH_FAILED, payload: err })
},
})
),
store.dispatch
)
github: redux-observable-another