@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 и т.д. Как это сделать?
  • Вопрос задан
  • 439 просмотров
Решения вопроса 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());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы