提问者:小点点

在Reactjs和nodejs中访问render中的变量


我将通过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

共3个答案

匿名用户

两个块都是异步的。 最好用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}`}/>
    }