У меня есть выборка Epi c, которая может вернуть 401 или 403, если у пользователя нет доступа к ресурсам на стороне сервера. Я хочу перенаправить во время этого Epi c, если это так.
Сейчас я делаю это:
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);
})
);
Где performFetch
это просто простая функция, которая делает извлекает и возвращает обещание.
Я использую window.location.replace
, и пока он работает нормально, но кто-то сказал мне, что это испортит React.
Я пытался использовать connected-react-router
и верните действие push
, но оно не выполняло перенаправление.
Можно ли продолжать делать это таким образом, или есть лучший способ?