[英]Accessing data from Axios GET request
我在从 Axios GET 请求访问数据时遇到问题。 我希望能够遍历我获得的所有数据并创建一个表,显示每个用户的用户名、头像和分数。 我目前能够呈现单个用户名的唯一方法是使用以下代码:
this.setState({name: res.data[0].username});
但是上面的代码只允许我访问我在 GET 请求中使用的 URL 中的第一个对象。 如果我使用此代码:
this.setState({name: JSON.stringify(res.data)});
我能够将整个对象呈现为一个字符串。 所以这让我觉得我需要更新我的渲染方法,但我不确定如何。
我应该采取哪些步骤来映射我正在设置的状态并将每个用户的数据呈现在表或列表中?
class LeaderBoard extends React.Component {
constructor(props) {
super(props)
this.state = {
name: []
}
}
componentDidMount(){
axios.get('https://fcctop100.herokuapp.com/api/fccusers/top/recent').then(res =>
{
this.setState({name: res.data[0].username});
});
}
render () {
return (
<div>
<h1>{this.state.name}</h1>
</div>
)
}
}
ReactDOM.render(
<LeaderBoard/>, document.getElementById("app"));
你在正确的轨道上,你只是错过了几个关键部分。
第 1 步:将整个数组添加到您的状态
我不确定您的数据的确切结构,但您可能想要这样做
componentDidMount(){
axios.get('https://fcctop100.herokuapp.com/api/fccusers/top/recent').then(res =>
{
this.setState({data: res.data});
});
}
现在,您拥有了要在状态中使用的所有数据,可以进行迭代了。
第 2 步:使用.map()
创建您想要的 JSX 元素
这段代码在这里:
render () {
return (
<div>
<h1>{this.state.name}</h1>
</div>
)
}
}
这里的大错误是它只会渲染一件事,因为,这就是全部。 您想要做的是.map()
通过并从您的数据中创建一堆名称,对吗?
那看起来更像这样。
render () {
const namesToRender = this.state.data.map(val => {
return (
<h1>val.username</h1>
)
})
return (
<div>
{namesToRender}
</div>
)
}
}
所有这一切都是在说“浏览这些数据并给我每个人的名字,然后将其包装在一些<h1>
标签中,然后将其吐出”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.