如何在 redux 可观察史诗中为 ajax 响应发出两个动作
How to emit two actions for ajax response in redux observable epic
我有 redux observable epic,它映射 AJAX 对单个操作的响应 ("createSuccess"):
export const create = (action$) => {
return action$.pipe(
ofType(CREATE_REQUEST),
mergeMap(action => {
return ajax({...}
).pipe(
map((response) => createSuccess(response.response)),
catchError(error => of(createFailure(error)))
);
})
);
};
除了 createSuccess 之外,如何触发不同的操作(我们称之为重定向)?此外,是否可以根据我从 ajax 呼叫中获得的响应来使该操作成为条件?
您可以使用 mergeMap
(concatMap
也可以)和 return 回调中的数组来代替 map
:
mergeMap((response) => [
otherAction(),
createSuccess(response.response),
]),
在回调中,您可以放置任何您想要的逻辑来创建您想要的任何数组。您 return 的数组由 mergeMap
自动迭代,并且每个项目都作为单独的发射重新发射。
我有 redux observable epic,它映射 AJAX 对单个操作的响应 ("createSuccess"):
export const create = (action$) => {
return action$.pipe(
ofType(CREATE_REQUEST),
mergeMap(action => {
return ajax({...}
).pipe(
map((response) => createSuccess(response.response)),
catchError(error => of(createFailure(error)))
);
})
);
};
除了 createSuccess 之外,如何触发不同的操作(我们称之为重定向)?此外,是否可以根据我从 ajax 呼叫中获得的响应来使该操作成为条件?
您可以使用 mergeMap
(concatMap
也可以)和 return 回调中的数组来代替 map
:
mergeMap((response) => [
otherAction(),
createSuccess(response.response),
]),
在回调中,您可以放置任何您想要的逻辑来创建您想要的任何数组。您 return 的数组由 mergeMap
自动迭代,并且每个项目都作为单独的发射重新发射。