Home Web Front-end JS Tutorial Implement paging components using react

Implement paging components using react

Jun 06, 2018 pm 03:21 PM
react reactjs Pagination

This article mainly introduces the attempt to use react to write a paging component by yourself (summary). Now I share it with you and give it as a reference.

This article introduces the attempt to use react to write a paging component by yourself (summary) and shares it with everyone. The details are as follows:

Paging effect

Online preview

github address

Screenshot of the effect (the style can be modified by yourself):

Build the project

1

create-react-app react-paging-component

Copy after login

Paging component

1. Subcomponent

Create Pagecomponent.js file

Core code:

Initialization value

1

2

3

4

5

6

7

8

9

constructor(props) {

   super(props)

   this.state = {

     currentPage: 1, //当前页码

     groupCount: 5, //页码分组,显示7个页码,其余用省略号显示

     startPage: 1, //分组开始页码

     totalPage:1 //总页数

   }

 }

Copy after login

Dynamic generation of page number function

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

createPage() {

    const {currentPage, groupCount, startPage,totalPage} = this.state;

    let pages = []

    //上一页

    pages.push(<li className={currentPage === 1 ? "nomore" : null} onClick={this.prePageHandeler.bind(this)}

            key={0}>

      上一页</li>)

 

    if (totalPage <= 10) {

      /*总页码小于等于10时,全部显示出来*/

      for (let i = 1; i <= totalPage; i++) {

        pages.push(<li key={i} onClick={this.pageClick.bind(this, i)}

                className={currentPage === i ? "activePage" : null}>{i}</li>)

      }

    } else {

      /*总页码大于10时,部分显示*/

 

      //第一页

      pages.push(<li className={currentPage === 1 ? "activePage" : null} key={1}

              onClick={this.pageClick.bind(this, 1)}>1</li>)

 

      let pageLength = 0;

      if (groupCount + startPage > totalPage) {

        pageLength = totalPage

      } else {

        pageLength = groupCount + startPage;

      }

      //前面省略号(当当前页码比分组的页码大时显示省略号)

      if (currentPage >= groupCount) {

        pages.push(<li className="" key={-1}>···</li>)

      }

      //非第一页和最后一页显示

      for (let i = startPage; i < pageLength; i++) {

        if (i <= totalPage - 1 && i > 1) {

          pages.push(<li className={currentPage === i ? "activePage" : null} key={i}

                  onClick={this.pageClick.bind(this, i)}>{i}</li>)

        }

      }

      //后面省略号

      if (totalPage - startPage >= groupCount + 1) {

        pages.push(<li className="" key={-2}>···</li>)

      }

      //最后一页

      pages.push(<li className={currentPage === totalPage ? "activePage" : null} key={totalPage}

              onClick={this.pageClick.bind(this, totalPage)}>{totalPage}</li>)

    }

    //下一页

    pages.push(<li className={currentPage === totalPage ? "nomore" : null}

            onClick={this.nextPageHandeler.bind(this)}

            key={totalPage + 1}>下一页</li>)

    return pages;

 

  }

Copy after login

Page number click function:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//页码点击

  pageClick(currentPage) {

    const {groupCount} = this.state

    const getCurrentPage = this.props.pageCallbackFn;

    //当 当前页码 大于 分组的页码 时,使 当前页 前面 显示 两个页码

    if (currentPage >= groupCount) {

      this.setState({

        startPage: currentPage - 2,

      })

    }

    if (currentPage < groupCount) {

      this.setState({

        startPage: 1,

      })

    }

    //第一页时重新设置分组的起始页

    if (currentPage === 1) {

      this.setState({

        startPage: 1,

      })

    }

    this.setState({

      currentPage

    })

    //将当前页码返回父组件

    getCurrentPage(currentPage)

  }

Copy after login

Previous page and summer night click event

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//上一页事件

  prePageHandeler() {

    let {currentPage} = this.state

    if (--currentPage === 0) {

      return false

    }

    this.pageClick(currentPage)

  }

 

  //下一页事件

  nextPageHandeler() {

    let {currentPage,totalPage} = this.state

    // const {totalPage} = this.props.pageConfig;

    if (++currentPage > totalPage) {

      return false

    }

    this.pageClick(currentPage)

  }

Copy after login

The component is rendered to the DOM

1

2

3

4

5

6

7

8

render() {

    const pageList = this.createPage();

    return (

      <ul className="page-container">

        {pageList}

      </ul>

    )

  }

Copy after login

2. Parent component

Create Pagecontainer.js file

Complete code of parent component

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

import React, {Component} from &#39;react&#39;

import Pagecomponent from &#39;../components/Pagecomponent&#39;

import data from &#39;../mock/tsconfig.json&#39;

 

class Pagecontainer extends Component {

  constructor() {

    super()

    this.state = {

      dataList:[],

      pageConfig: {

        totalPage: data.length //总页码

      }

    }

    this.getCurrentPage = this.getCurrentPage.bind(this)

  }

  getCurrentPage(currentPage) {

    this.setState({

      dataList:data[currentPage-1].name

    })

  }

  render() {

    return (

      <p>

        <p>

          {this.state.dataList}

        </p>

        <Pagecomponent pageConfig={this.state.pageConfig}

                pageCallbackFn={this.getCurrentPage}/>

      </p>

 

    )

  }

}

export default Pagecontainer

Copy after login

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

How to use filters in the Vue2.0 series?

How to return to the top through the tween method in the vue project

How to use vue to determine that the input content is all spaces?

The above is the detailed content of Implement paging components using react. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to build a reliable messaging app with React and RabbitMQ How to build a reliable messaging app with React and RabbitMQ Sep 28, 2023 pm 08:24 PM

How to build a reliable messaging application with React and RabbitMQ Introduction: Modern applications need to support reliable messaging to achieve features such as real-time updates and data synchronization. React is a popular JavaScript library for building user interfaces, while RabbitMQ is a reliable messaging middleware. This article will introduce how to combine React and RabbitMQ to build a reliable messaging application, and provide specific code examples. RabbitMQ overview:

React Router User Guide: How to implement front-end routing control React Router User Guide: How to implement front-end routing control Sep 29, 2023 pm 05:45 PM

ReactRouter User Guide: How to Implement Front-End Routing Control With the popularity of single-page applications, front-end routing has become an important part that cannot be ignored. As the most popular routing library in the React ecosystem, ReactRouter provides rich functions and easy-to-use APIs, making the implementation of front-end routing very simple and flexible. This article will introduce how to use ReactRouter and provide some specific code examples. To install ReactRouter first, we need

How to use JavaScript to implement table paging function? How to use JavaScript to implement table paging function? Oct 20, 2023 pm 06:19 PM

How to use JavaScript to implement table paging function? With the development of the Internet, more and more websites use tables to display data. In some cases where the amount of data is large, the data needs to be displayed in pages to improve user experience. This article will introduce how to use JavaScript to implement table paging function and provide specific code examples. 1. HTML structure First, we need to prepare an HTML structure to host tables and paging buttons. We can use &lt;tab

PHP, Vue and React: How to choose the most suitable front-end framework? PHP, Vue and React: How to choose the most suitable front-end framework? Mar 15, 2024 pm 05:48 PM

PHP, Vue and React: How to choose the most suitable front-end framework? With the continuous development of Internet technology, front-end frameworks play a vital role in Web development. PHP, Vue and React are three representative front-end frameworks, each with its own unique characteristics and advantages. When choosing which front-end framework to use, developers need to make an informed decision based on project needs, team skills, and personal preferences. This article will compare the characteristics and uses of the three front-end frameworks PHP, Vue and React.

Integration of Java framework and front-end React framework Integration of Java framework and front-end React framework Jun 01, 2024 pm 03:16 PM

Integration of Java framework and React framework: Steps: Set up the back-end Java framework. Create project structure. Configure build tools. Create React applications. Write REST API endpoints. Configure the communication mechanism. Practical case (SpringBoot+React): Java code: Define RESTfulAPI controller. React code: Get and display the data returned by the API.

Detailed explanation of the principle of MyBatis paging plug-in Detailed explanation of the principle of MyBatis paging plug-in Feb 22, 2024 pm 03:42 PM

MyBatis is an excellent persistence layer framework. It supports database operations based on XML and annotations. It is simple and easy to use. It also provides a rich plug-in mechanism. Among them, the paging plug-in is one of the more frequently used plug-ins. This article will delve into the principles of the MyBatis paging plug-in and illustrate it with specific code examples. 1. Paging plug-in principle MyBatis itself does not provide native paging function, but you can use plug-ins to implement paging queries. The principle of paging plug-in is mainly to intercept MyBatis

How to use React to develop a responsive backend management system How to use React to develop a responsive backend management system Sep 28, 2023 pm 04:55 PM

How to use React to develop a responsive backend management system. With the rapid development of the Internet, more and more companies and organizations need an efficient, flexible, and easy-to-manage backend management system to handle daily operations. As one of the most popular JavaScript libraries currently, React provides a concise, efficient and maintainable way to build user interfaces. This article will introduce how to use React to develop a responsive backend management system and give specific code examples. Create a React project first

Vue component practice: paging component development Vue component practice: paging component development Nov 24, 2023 am 08:56 AM

Vue component practice: Introduction to paging component development In web applications, the paging function is an essential component. A good paging component should be simple and clear in presentation, rich in functions, and easy to integrate and use. In this article, we will introduce how to use the Vue.js framework to develop a highly customizable paging component. We will explain in detail how to develop using Vue components through code examples. Technology stack Vue.js2.xJavaScript (ES6) HTML5 and CSS3 development environment

See all articles