简体   繁体   English

反应分页:如何在点击时加载第二页数据

[英]React Pagination : How to Load second page data on Click

I am creating pagination for my application, I am beginner to reactJS . 我正在为我的应用程序创建分页,我是reactJS的初学者。 I am using API for fetching page data but data is long long as list , I want to show it ( 10-10 ) . 我正在使用API​​来获取页面数据,但数据长于列表,我想显示它(10-10)。 I Implemented Logic for it , fortunately it showing 10 entries on first page when I click on 2 Nothing happen . 我为它实现了逻辑,所幸的是,当我单击2 Nothingthing时,它在首页上显示10个条目。 I want to show first 10 entries in first page but when user click on 2 It must show 10-20 entries in second page ( Mean that on second click it should skip first 10 entries and include 10-20 in second page ) . 我想在首页上显示前10个条目,但是当用户单击2它必须在第二页上显示10-20个条目(这意味着在第二次单击时,它应该跳过前10个条目,并在第二页中包含10-20个条目)。 It will maintain same manner when user click on next or 3 . 当用户单击next或3时,它将保持相同的方式。 It possible because API is built in loopback and loopback give filtering functionality . 可能是因为API内置在环回中,而环回提供了过滤功能。 I used filter in API link for just first 10 entries which are showing in first page . 我在API链接中仅对前10个条目使用了过滤器,这些条目显示在第一页中。 Could someone please help me how to implement this logic . 有人可以帮我如何实现这种逻辑。 Thanks 谢谢

Code

        class Example extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      Item: 5,
      skip: 0
    }

    this.handleClick = this.handleClick.bind(this);
  }

  urlParams() {
    return `http://localhost:3001/meetups?filter[limit]=${(this.state.Item)}&&filter[skip]=${this.state.skip}`
  }

  handleClick() {
    this.setState({skip: this.state.skip + 1})
  }

  render() {
    return (
      <div>
        <a href={this.urlParams()}>Example link</a>
        <pre>{this.urlParams()}</pre>
        <button onClick={this.handleClick}>Change link</button>
      </div>
    )
  }
}


ReactDOM.render(<Example/>, document.querySelector('div#my-example' ))

setState function is asynchronous. setState函数是异步的。 That means that you are triggering the second call to api before setting the new id in state. 这意味着您要在将新ID设置为状态之前触发对api的第二次调用。

Try by passing a callback function to the setState method: 通过将回调函数传递给setState方法来尝试:

this.setState({
  id
}, () => this.getData())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM