Я пытаюсь реализовать разбивку на страницы в реактивах, получая данные из JSON и используя axios для извлечения данных. Вот как я это делаю.
class Listing extends Component {
items = [];
page = 0;
itemsPerPage = 4;
constructor(props) {
super(props);
this.getData = this.getData.bind(this);
}
getData() {
axios.get("https://api.myjson.com/bins/cdlry").then(res => {
this.items = [...this.items, ...res.data];
const nextPage = this.state.page + 1;
this.setState({ page: nextPage });
});
}
componentWillMount() {
this.getData();
}
showPage() {
const nextItemsIndex = (this.state.page - 2) * this.itemsPerPage;
return this.items
.slice(nextItemsIndex, nextItemsIndex + this.itemsPerPage)
.map((data, index) => (
<div key={index}>
//looping data
</div>
));
}
render() {
const items = this.showPage();
return (
<div id="listing">
<br />
<div>{items} </div>
<button onClick={this.getData}>Load Next</button>
</div>
);
}
}
В настоящее время, когда я нажимаю на кнопку, она не останавливается на последнем указателе или объекте. Это постоянно повторяется.
Должен ли я написать другую функцию для next
страницы?
и какой подход я должен использовать, чтобы перейти на страницу previous
?
Нужно ли использовать другой подход, чтобы сделать то же самое? Мой предыдущий подход был связан с this.setState({})
для перебора страниц.