javascript - 如果 api 中没有更多信息,如何删除按钮
问题描述
以下代码运行顺利,但我想以一种方式实现它,当我执行getNextPers()并且没有信息时,它会隐藏/删除Ver Mais按钮。我一直在寻找解决方案,但没有找到,所以任何帮助都是好的。谢谢你。
import React from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
class List extends React.Component {
constructor(props){
super(props);
this.state = {
personagens: [],
page: 1,
showBtn: true,
};
this.getNextPers = this.getNextPers.bind(this);
}
getNextPers(){
const peopleApiEndpoint = `https://swapi.co/api/people/${this.state.page}`;
axios.get(peopleApiEndpoint).then((p) =>
if(p=={}){
this.setState({ showBtn: false });
}
else {
this.setState({ personagens: this.state.personagens.concat(p), page: this.state.page+1 })
}
);
}
render(){
return (
<div>
<p><b>Personagens:</b></p>
{this.state.personagens.map((pers, i) => (
<div key={i}>
<br />
<p><i>Name:</i> {pers.data.name}</p>
<p><i>Height:</i> {pers.data.height} cm</p>
<p><i>Mass:</i> {pers.data.mass} kg</p>
</div>
))}
<button onClick={this.getNextPers}>Ver Mais</button>
</div>
);
}
}
ReactDOM.render(<List />, document.getElementById('root'));
解决方案
由于您将showBtn
状态存储在组件中,因此可以使用它来有条件地呈现按钮,如下所示:
render(){
return (
<div>
<p><b>Personagens:</b></p>
{this.state.personagens.map((pers, i) => (
<div key={i}>
<br />
<p><i>Name:</i> {pers.data.name}</p>
<p><i>Height:</i> {pers.data.height} cm</p>
<p><i>Mass:</i> {pers.data.mass} kg</p>
</div>
))}
{ (this.state.showBtn) ?
<button onClick={this.getNextPers}>Ver Mais</button>
:
null
}
</div>
);
}
推荐阅读
- ios - 在后台一段时间后将应用程序带到前台时,iOS黑屏
- sockets - Python 中的 Google 语音 API
- sql - 大型 MS SQL Server 表非常慢
- python - 为什么 get_success_url 一直将我引导到同一页面?(姜戈)
- angular - 从ionic3中的模态取回数据
- javascript - ReactiveSearch 中的自定义组件
- python - 按条件从列表中排除值的循环失败
- xamarin - 如何在 VS 2019 RC 中安装 Xamarin.Forms 4.0 模板?
- excel - VBA:如果然后在之后有2个语句
- http-redirect - 重定向到这样的网址是否安全:“https://example.com/”+ userData?