【发布时间】:2021-04-10 15:12:48
【问题描述】:
我是 React 新手。我有一个 node.js API。我正在尝试创建一个登录页面。我向 API 发出请求,我可以得到响应。我将返回的答案放入名为“用户”的状态中。我想用地图功能将它打印到标签上并检查数据。但是,我收到错误“TypeError:无法读取未定义的属性 'map'。”我已经用 [] 定义了状态,我不知道还能做什么。
import React, { Component } from 'react'
export default class App extends Component {
state = { user: [] }
componentDidMount(){
this.getLogin();
}
getLogin = () =>{
let data = {
"email": "xxxxxx@gmail.com",
"password": "123456"
}
fetch("http://localhost:5000/api/auth/login",{
method:'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(response => console.log(response))
.then(data => this.setState({ user : data }));
}
render() {
return (
<div>
{this.state.user.map(data => (
<h3> {data.data.access_token} </h3>
))}
</div>
)
}
}
{
我在这里添加从 API 返回的答案。
success: true, access_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVmY…I5M30.9r9iRA0lyXTy-MjUr2QN9RrxGneqyUoVZM8eFeXoK1s", data: {…}}
access_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVmYzNmYmFiNjFhOWQzMGQwNDNjY2I0OSIsIm5hbWUiOiJOZW1yYW4gQWtzYWthbCIsImlhdCI6MTYwOTc5MDI5M30.9r9iRA0lyXTy-MjUr2QN9RrxGneqyUoVZM8eFeXoK1s"
data: {name: "Red Reddington", email: "example@gmail.com"}
success: true
__proto__: Object
【问题讨论】:
-
我认为这是因为
.then(response => console.log(response))在链接then时,前一个then返回的内容是下一个then可用的内容,因为console.log不返回任何内容下一个then将接收undefined的data参数,您将设置user状态为undefined。 -
您的数据是包含来自用户的详细信息的对象,而不是用户数组。另外,由于这是一个登录用户请求,我建议您不要使用初始
[]状态,而是使用null状态,并且不要在user上使用映射,因为您没有获取用户。
标签: javascript reactjs api state