React Router не рендерит компонент даже при изменении URL - PullRequest
0 голосов
/ 13 февраля 2020

Я использую токен JWT для аутентификации в reactJS с Django в качестве бэкэнда. Когда срок действия маркера refre sh истекает, Ax ios используется в качестве перехватчика, и он меняет URL-адрес страницы на /account/login. Однако реактивный маршрутизатор не отображает страницу входа.

Вот код моего перехватчика: ax ios. js file

import { createBrowserHistory } from 'history';
const history = createBrowserHistory();

axios.interceptors.response.use((response) => {
   return response
}, function (error) {
   const originalRequest = error.config;

      if (error.response.status === 401 && originalRequest.url.includes('/api/token/refresh/')) {
          console.log('101')
          history.replace('/account/login/')
          store.dispatch(actionCreator.setAuthFalse());
           return Promise.reject(error);
       }

Вот код для мой маршрут:

в приложении. js

<Suspense fallback={<Loader/>}>
      <BrowserRouter>
        <Fragment>
          <Navbar/>
          <Switch>
<Route exact path='/service/' component={AllServices}/>
<Route exact path='/article/' component={Article}/>
<Route exact path='/account/login/' component={LoginPage} />
         </Switch>
        </Fragment>
      </BrowserRouter>
     </Suspense>
const mapStateToProps = state => {
  return {
    accessToken: state.accessToken,
    refreshToken: state.refreshToken,
    expiresIn: state.expiresIn,
    isAuthenticated: state.isAuthenticated
  }
}

const mapDispatchToProps = dispatch => {
  return{
    auth_user_after_refresh: (refreshToken) => dispatch(authActions.getAnotherAccessToken(refreshToken)),
    logout: () => dispatch(authActions.logoutUser())
  }
}

export default withRouter(connect(mapStateToProps, mapDispatchToProps)(App));

Как убедиться, что компонент отображается при изменении URL-адреса?

...