在反应路由器过渡期间如何获取数据?

时间:2019-03-31 21:49:37

标签: javascript reactjs react-router

我想每次访问路线时获取数据

我试图在异步函数中返回某些内容,但是我得到了一个承诺,我只需要用于渲染的值

这是我每次访问路线时都要执行的提取功能

   isLogged = async()=>{
    //return 0;
    let response = await 
            fetch(`${CONFIG.server}/getStudentLogin`,{
        method: 'GET',
        headers: {
            'Authorization': 
                             store.getState().userDataLogged.token,
            'Content-Type': 'application/json'
        }
    })
    let dataResponse = await response.json();
    console.log(dataResponse)
    if(dataResponse.status == 500){
        //console.log("xd")
        return false;
    }
    return true;
}

例如,这是我的渲染功能

  <Route exact path="/student" render={()=>(
      this.isLogged() ? (
        this.isStudent() ? (                         
          <StudentView/>
        ):(
          <TeacherView/>
        )
      ):(
        <Redirect to="/login"/>
      )
   )}/>

问题是isLogged函数向我返回了一个承诺,但是我只需要返回一个值,例如true或false

1 个答案:

答案 0 :(得分:0)

如果您需要执行诺言,您可以在async中的函数定义之前添加render,然后在await之前使用this.isLogged()

<Route exact path="/student" render={async ()=>(
      await this.isLogged() ? (
        this.isStudent() ? (                         
          <StudentView/>
        ):(
          <TeacherView/>
        )
      ):(
        <Redirect to="/login"/>
      )
   )}/>