Задать вопрос
@Tsyklop
Full Stack Developer

Как вызвать переход на другую страницу вне action?

Использую Axios для запросов. Создал interceptor на ответ от сервера. Если сервер возвращает 401 ошибку, мне нужно взять refresh token и отправить на сервер что бы обновить access token.

Вот interceptor:

Axios.interceptors.response.use(function (response) {
    console.log(response);
    if(isResponseOK(response))
        return response;

    const originalRequest = response.config;

    Axios.post(REFRESH_TOKENS, {
        refreshToken: AppStore.retrieve("refreshToken")
    })
        .then(function (response) {
            
        })
        .catch(function (error) {

        });

}, function (error) {
    console.log(error);
    return Promise.reject(error);
});


И вот тут трудность. Если же проверка refresh токена прошла не успешно, мне нужно перенаправить пользователя на страницу авторизации. Как это сделать? учитывая что тут нет store, dispatch и т.д. В общем те штуки которые используются в action и т.д. Как это сделать?
  • Вопрос задан
  • 463 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    Разработка на React
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 1
@alprtv
store, dispatch можно получить из файла в котором вызывается configureStore(), для этого нужно его экспортнуть.
Например так:
import React from 'react';
import { Provider } from 'react-redux';
import configureStore from '../store/configureStore';
import CoreLayout from './CoreLayout';

export const store = configureStore();

const App = () => (
  <Provider store={store}>
    <CoreLayout />
  </Provider>
);

export default App;


После чего в api.js, можно вызывать actions:
import { store } from '../../containers/App';
store.dispatch(signOutAction());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 250 000 до 300 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽