我想每次访问路线时获取数据
我试图在异步函数中返回某些内容,但是我得到了一个承诺,我只需要用于渲染的值
这是我每次访问路线时都要执行的提取功能
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
答案 0 :(得分:0)
如果您需要执行诺言,您可以在async
中的函数定义之前添加render
,然后在await
之前使用this.isLogged()
<Route exact path="/student" render={async ()=>(
await this.isLogged() ? (
this.isStudent() ? (
<StudentView/>
):(
<TeacherView/>
)
):(
<Redirect to="/login"/>
)
)}/>