我有一个问题,我有一个受保护的路由,该路由被下面的Epic提取。如果不符合访问受保护路由的条件,则会将用户重定向到另一个页面。不幸的是,这种效果仍然存在,在这种情况下这是一个承诺,将失败并向用户显示错误。
export const examplePageLoadEffect: Epic<AnyAction, IAppState> = (action$) =>
action$
.ofType(LOCATION_CHANGE)
.map((action: LocationChangeAction) => action.payload.pathname)
.filter((url) => /protected-path/.test(url))
.switchMap((url) => {
return Observable.fromPromise(fetchSomePromise())
.switchMap((promiseResponse) => Observable.of(
doSomethingWithPromise(promiseResponse)
))
.catch((err) => Observable.of(doSomethingWithError(err));
}
);
是否有一种解决方法,如果将受保护的路由重定向到另一条路由,则该路由会停止?
谢谢。
答案 0 :(得分:1)
是的,您可以使用takeUntil
operator,请参阅Redux Observable - Cancellation
此外,请记住,Promise通常无法取消,因此您可能想使用Observables