在SET_COLOUR_RANGE操作下面的代码中,更新Redux中的一个值,该值是FETCH_COLOURS的有效负载。因此,我希望在Redux中的值更新后调用FETCH_COLOURS动作。
使用mapTo运算符是仅在SET_COLOUR_RANGE完成之后才调用FETCH_COLOURS操作,还是在之后立即调用?
import { selectColoursRange } from 'app/selectors/colours';
export const setColourRangeEpic = action$ =>
action$.pipe(ofType('SET_COLOUR_RANGE'), mapTo({ type: 'FETCH_COLOURS' }));
export const fetchColoursEpic = (action$, store) =>
action$
.ofType('FETCH_COLOURS')
.mergeMap(() =>
fromPromise(
axios.post(`/colour`, selectColoursRange(store.getState()))
)
.map(response => ({
type: 'FETCH_COLOURS_SUCCESS',
data: response.data
}))
.catch(error =>
Observable.of({
type: 'FETCH_COLOURS_ERROR',
error
})
)
);
答案 0 :(得分:1)
reducer总是会在史诗获得动作之前获得动作。
因此SET_COLOUR_RANGE进入化简器(从而更新状态),然后进入setColourRangeEpic并映射到FETCH_COLOURS动作。此FETCH_COLOURS操作转到减速器,然后转到fetchColoursEpic。在您调用selectColoursRange(store.getState())时,状态已更新。