【问题标题】:How to fix when React JS Pagination component does Nothing on Click?当 React JS 分页组件在点击时什么都不做时如何解决?
【发布时间】:2019-11-19 19:53:26
【问题描述】:

我使用 react js 分页组件并编写了文档中提到的代码,但它在点击时什么也不做。

从“react-js-pagination”导入分页

我在这里使用它:

{this.state.spareParts.map((part, index) =>
    <Col md="3" lg="3" sm="6" xs="6" xl="3">
    	<Card>
    		<h4>
    			<b> {part.Name}  </b>
    		</h4>
    		<h4> Rs. {part.Price}  </h4>
    		<h5> By: {part.CompanyName} </h5>
    	</Card>
    </Col>
 )}

<Pagination
          data={this.state.spareParts}
              activePage={this.state.activePage}
              itemsCountPerPage={10}
              totalItemsCount={50}
              pageRangeDisplayed={5}
              onChange={this.handlePageChange} />

这里是handlePageChange函数:

handlePageChange(pageNumber)
{
	console.log(`active page is ${pageNumber}`);
	this.setState({activePage: pageNumber});
}

谁能告诉我我在这里做错了什么,因为我在点击分页栏时没有得到任何结果。

【问题讨论】:

    标签: javascript json reactjs pagination components


    【解决方案1】:

    它对我有用。你可以试试下面的代码吗?

    为什么需要发送data(spareParts),因为组件不使用data作为prop。

    import React, { Component } from "react";
    import ReactDOM from "react-dom";
    import Pagination from "react-js-pagination";
    import 'bootstrap/dist/css/bootstrap.min.css';
    
    class App extends Component {
      constructor(props) {
        super(props);
        this.state = {
          activePage: 15
        };
      }
    
      handlePageChange(pageNumber) {
        console.log(`active page is ${pageNumber}`);
        this.setState({activePage: pageNumber});
      }
    
      render() {
        return (
          <div>
            <Pagination
              activePage={this.state.activePage}
              itemsCountPerPage={10}
              totalItemsCount={450}
              pageRangeDisplayed={5}
              onChange={this.handlePageChange}
            />
          </div>
        );
      }
    }
    
    ReactDOM.render(<App />, document.getElementById("root"));
    

    编码愉快!!!

    【讨论】:

    • 感谢您的回复。我做了与上面相同的代码,但它只显示了一个分页栏。我希望从此栏中仅在我的页面上显示选定的项目(来自 this.state.spareParts),但显示所有相同的项目,无论是单击第 1 页还是第 3 页或任何页面。
    • 我正在发送数据,因为我不知道这个分页组件如何知道它必须在哪些数据上应用分页。
    • 您必须在handlePageChange 中过滤数据,而不是通过将数据传递给Pagination 组件。 Pagination 组件不应该知道你的数据。
    • 我是否必须再次调用 API 才能获取页面的有限数据?它如何为每个页面获取不同的数据?
    • 有两种方法,要么获取所有数据,然后根据activePagehandlePage 函数中过滤,或者如果数据很大,则每次页面更改都点击api。
    猜你喜欢
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多