Javascript 创建一个元epic,其工作原理类似于combineEpics,但基于名称空间选择一个epic
我正试图给我的史诗命名。我基本上希望结合我的epic,但是使用的epic应该取决于在我的状态中设置的名称空间。 到目前为止,我已经到了这里:Javascript 创建一个元epic,其工作原理类似于combineEpics,但基于名称空间选择一个epic,javascript,rxjs,reactive-programming,reactive,Javascript,Rxjs,Reactive Programming,Reactive,我正试图给我的史诗命名。我基本上希望结合我的epic,但是使用的epic应该取决于在我的状态中设置的名称空间。 到目前为止,我已经到了这里: const epics = { 'ns1': nameSpace1Epic, 'ns2': nameSpace2Epic, 'default': (action$, store) => { return Observable.of({type: 'NOP'}) } } const superEpic = (action$, s
const epics = {
'ns1': nameSpace1Epic,
'ns2': nameSpace2Epic,
'default': (action$, store) => {
return Observable.of({type: 'NOP'})
}
}
const superEpic = (action$, store) => {
const { namespace } = store.getState()
const epic = epics[namespace]
const resultAction$ = epic(action$, store)
return resultAction$
}
这适用于第一个操作,它成功地切换到正确的命名空间。
然而,当第二个动作出现时,它仍然停留在第一个选择的名称空间。
没有任何动作通过超级史诗,它直接进入第一部史诗
我一直在阅读Rx文档,并尝试不同类型的运营商,没有任何运气。
有人知道我可能做错了什么吗?我找到了解决问题的办法
superEpic
应该是一个将操作(一次一个)定向到命名空间流的流,它现在所做的只是用另一个流替换自己<代码>平面图救援:
const superEpic = (action$, store) =>
action$.flatMap(action => {
const { namespace } = store.getState()
const epic = epics[namespace]
return epic(Observable.of(action), store)
})
如果要在操作流中使用of type
运算符,请确保从redux observable/lib/ActionsObservable
导入ActionsObservable
像这样:
从'redux observable/lib/ActionsObservable'导入{ActionsObservable}
我找到了解决问题的办法superEpic
应该是一个将操作(一次一个)定向到命名空间流的流,它现在所做的只是用另一个流替换自己<代码>平面图救援:
const superEpic = (action$, store) =>
action$.flatMap(action => {
const { namespace } = store.getState()
const epic = epics[namespace]
return epic(Observable.of(action), store)
})
如果要在操作流中使用of type
运算符,请确保从redux observable/lib/ActionsObservable
导入ActionsObservable
像这样:
从'redux observable/lib/ActionsObservable'导入{ActionsObservable}