reactjs - React Router 重定向到登录页面但不渲染登录组件

标签 reactjs react-router

我正在使用 React Router v4 进行非常基本的身份验证工作流程,如下所示:

const AuthenticatedRoute = ({ component: Component, ...rest }) => (  
  <Route {...rest} render={props => (
    sessionStorage.getItem('jwt') ? (
      <Component {...props} />
    ) : (
      <Redirect to={{
        pathname: "/login",
        state: { from: props.location }
      }} />
    )
  )}/>
)

ReactDOM.render(
  <Provider store={createStoreWithMiddleware(reducers)}>
    <BrowserRouter>
      <div>
          <AuthenticatedRoute exact path="/" component={App}  />
          <Route path="/login" component={LoginPage} />
      </div>
    </BrowserRouter>
  </Provider>
  , document.querySelector('.container'));

该流程运行完美,当没有“jwt”时,应用程序将重定向到/login。然而,奇怪的是,直到我从浏览器中按刷新后,它才被渲染(即空白页面)。

不确定如何调试和/或可能出现什么问题,因为这与网上找到的大多数示例类似。

最佳答案

我猜你使用了react-redux,这是一个常见问题。 (如果没有我会删除答案)

在react-redux connect中使用{pure: false}或使用withRouter HOC。

React router 4 does not update view on link, but does on refresh

关于reactjs - React Router 重定向到登录页面但不渲染登录组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46036809/

相关文章:

javascript - 如何在 react-native 中以编程方式重新加载当前页面

javascript - Electron.JS + devtoolsinstaller : 'BrowserWindow.addDevToolsExtension' is deprecated and will be removed. 请改用 'session.loadExtension'

reactjs - 从NextJS上的组件或API路由调用Socket IO实例

javascript - 如何在JavaScript中使map函数的键值对每个元素递增

reactjs - 如何在 Tauri 中使用 window.location?

ReactJS Context API - 以编程方式重定向/导航

reactjs - React Router browserHistory 推送和 anchor

javascript - 如何让我的项目默认使用全局 .eslintrc 文件?

javascript - react js 和 redux 在每条路线之前发送一个 api 调用

javascript - ReactJS路由器不渲染组件