在使用反应路由器渲染组件之前,如何等待承诺得到解决?

时间:2017-06-22 16:50:31

标签: javascript reactjs react-router

我使用的是React Router,他们的私有路由示例是:

const fakeAuth = {
  isAuthenticated: false,
  authenticate(cb) {
    this.isAuthenticated = true
    setTimeout(cb, 100) // fake async
  },
  signout(cb) {
    this.isAuthenticated = false
    setTimeout(cb, 100)
  }
}

const PrivateRoute = ({ component: Component, ...rest }) => (
  <Route {...rest} render={props => (
    fakeAuth.isAuthenticated ? (
      <Component {...props}/>
    ) : (
      <Redirect to={{
        pathname: '/login',
        state: { from: props.location }
      }}/>
    )
  )}/>
)

我的问题是:如何在呈现组件之前调用端点,以验证存储在会话存储中的令牌是否仍然有效?因此,只有当我的会话存储空间中没有任何内容(我可以轻松地执行此操作),或者会话存储中的访问令牌不再有效时,我的PrivateRoute才会redirect({1}}这是我调用我的API以查看它是否仍然有效的地方。

1 个答案:

答案 0 :(得分:-1)

为什么不使用this.setState?它的第二个参数允许你进行回调。您可以在其中重定向用户

相关问题