Настоящая проблема здесь:
axios.get(peopleApiEndpoint).then((p) => {
if (p == {}) { // THIS WILL NEWER WORK AS EXPECTED
this.setState({showBtn: false});
} else {
this.setState({
personagens: this.state.personagens.concat(p),
page: this.state.page + 1
});
}
});
Также swapi
возвращает 404, когда больше нет результатов вместо пустого объекта, поэтому вам нужно добавить блок catch
к вашему axios.get
, как описанов документах: https://github.com/axios/axios#handling-errors
axios.get(peopleApiEndpoint).then((p) => {
this.setState({
personagens: this.state.personagens.concat(p),
page: this.state.page + 1
});
}).catch((err) => {
this.setState({showBtn: false});
});
Теперь вы можете использовать условный рендеринг, например:
{(this.state.showBtn && <button onClick={this.getNextPers}>Ver Mais</button>)}