【发布时间】:2019-04-08 22:09:37
【问题描述】:
我是 react 初学者,遇到以下问题:
我正在使用一个超过 60 个字符的 API,我的问题是我想确保我的 API 的所有字符都呈现出来,而不必手动添加每个数字。({this.state.people[0] .name},...,{this.state.people[n].name})。
这个问题也让我做了两次 API 调用,因为 API 每次调用只提供 10 个结果。接下来是第 2 页。
我使用 ?=page2 创建了一个新调用,但这是一种非常乏味的方法,因为我必须添加 10 个不同的 API 调用来添加所有字符。 我想过做一个 for 循环,但我真的不知道如何处理。
class Api extends Component {
state ={
people:[
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
],
people2:[
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
{name:'Title'},
]
}
componentDidMount() {
axios.get('https://swapi.co/api/people/')
.then(starwars => {
this.setState({
people: starwars.data.results
})
console.log(starwars.data.results)
})
axios.get('https://swapi.co/api/people/?page=2')
.then(starwars2 => {
this.setState({
people2: starwars2.data.results
})
console.log(starwars2.data.results)
})
.catch(error => {
console.log(error);
});
}
render(){
return (
<div>
<Cards title={this.state.people[0].name} />
<Cards title={this.state.people[1].name} />
<Cards title={this.state.people[2].name} />
<Cards title={this.state.people[3].name} />
<Cards title={this.state.people[4].name} />
<Cards title={this.state.people[5].name} />
<Cards title={this.state.people[6].name} />
<Cards title={this.state.people[7].name} />
<Cards title={this.state.people[8].name} />
<Cards title={this.state.people[9].name} />
<Cards title={this.state.people2[0].name} />
<Cards title={this.state.people2[1].name} />
<Cards title={this.state.people2[2].name} />
<Cards title={this.state.people2[3].name} />
<Cards title={this.state.people2[4].name} />
<Cards title={this.state.people2[5].name} />
<Cards title={this.state.people2[6].name} />
<Cards title={this.state.people2[7].name} />
<Cards title={this.state.people2[8].name} />
<Cards title={this.state.people2[9].name} />
</div>)
}
}
export default Api;
一次调用 60 个字符的 API。
【问题讨论】:
-
您的问题出在 API 上,而不是在 axios 上。您需要阅读 API 文档并了解如何通过单个请求检索所有字符。
-
我认为我没有看到获取所有记录的选项。正如您所说,您可以循环并执行尽可能多的请求以获取所有人。响应显示当前为
87的count。你可以做一些划分来确定你需要做多少页面或请求。
标签: reactjs api axios setstate