我将通过nodejs从mongodb获取的数据存储在如下变量中
axios.post('http://localhost:5000/Users/login',user)
.then(res=>{
Userdata=res.data.users
console.log(Userdata)
console.log(Userdata._id)
})
但在这里我无法访问render函数中变量中的数据:
if(this.state.loggedin){
return <Redirect to={`/UI/Navbar/Dashboard/${Userdata._id}`}/>
}
它给了我这样一个错误:
TypeError: Cannot read property '_id' of undefined
两个块都是异步的。 最好用UseEffect
包装异步数据加载,显式设置某个顶级组件的状态,并将使用上下文API登录的用户向下传播到其他组件。
render函数试图创建一个组件,尽管数据还没有被提取。 这就是it Userdata未定义的原因。 您的Userdata必须是一个状态,当axios触发时,使用setState更改Userdata。 在获取Userdata时,您必须呈现类似“inprocess.。。”的内容
由于api数据是在调用render方法之后接收的,因此它将UserData
作为未定义的对象,请尝试执行如下操作
if(this.state.loggedin && Userdata){
return <Redirect to={`/UI/Navbar/Dashboard/${Userdata._id}`}/>
}