Как получить данные во время реакции маршрутизатора? - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу получать данные каждый раз, когда посещается маршрут

Я пытался вернуть что-то в моей асинхронной функции, но я получил обещание, и мне нужно только значение для рендеринга

Это моя функция извлечения, которую я хочу выполнять при каждом посещении маршрута.

   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 голосов
/ 01 апреля 2019

Если вам нужно выполнить обещание, вы можете просто добавить async перед определением функции в render и затем использовать await перед this.isLogged()

<Route exact path="/student" render={async ()=>(
      await this.isLogged() ? (
        this.isStudent() ? (                         
          <StudentView/>
        ):(
          <TeacherView/>
        )
      ):(
        <Redirect to="/login"/>
      )
   )}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...