如果用户无权访问服务器端资源,我有一个 fetch Epic 可能会返回 401 或 403。如果是这种情况,我想在这个 Epic 期间重定向。
现在我正在这样做:
export const fetch$ = <T = any>(req: IRequest) =>
from(performFetch<T>(req)).pipe(
switchMap(res => of(res)),
catchError(e => {
if (e.status === 401 || e.status === 403) {
window.location.replace(`/login?fwd=${encodeURIComponent(window.location.pathname)}`);
return NEVER;
}
return of(e);
})
);
WhereperformFetch
只是一个简单的函数,它执行 fetch 并返回一个 Promise。
我正在使用window.location.replace
,到目前为止它工作正常,但有人告诉我它会搞砸 React。
我尝试使用connected-react-router
并返回一个push
动作,但它没有进行重定向。
我可以安全地继续这样做,还是有更好的方法?