我到处搜索,找不到以下的答案......
在我的addItemEpic中,我想在发送ajax请求之前调度"加载"操作 - 我不希望返回操作的值 - 我只是想做动作然后返回ajax响应.这可以通过store.dispatch()轻松实现,如下所示:
export const addItemsEpic = (action$, store) =>
action$.ofType(ADD_ITEM)
.do(() => store.dispatch({
type: 'layout/UPDATE_LAYOUT',
payload: { loading: true }
}))
.switchMap(action => api.addItem(action.payload))
.map(item => loadItem(item))
.do(() => store.dispatch({
type: 'layout/UPDATE_LAYOUT',
payload: { loading: false }
}))
.catch(error => Observable.of({
type: 'AJAX_ERROR',
payload: error,
error: true
}));
Run Code Online (Sandbox Code Playgroud)
但是,不推荐使用store.dispatch(),并且不建议在redux-observable中使用store.dispatch().
我试图使用几乎所有合理的操作符,但仍然无法在不中断下一个链接函数中的返回值的情况下调度操作.我认为像te一样的东西应该这样做:
action$.ofType(ADD_ITEM)
.concatMap(action => Observable.of(
updateLayout({loading: true}),
api.addItem(action.payload)).last())
.map(item => loadItem(item))
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这里有两个问题:
我真的很感激这里的一些帮助或建议,因为我找不到任何方法让这个工作.
提前致谢