0

0

使用react实现分页组件

亚连

亚连

发布时间:2018-06-06 15:21:00

|

3654人浏览过

|

来源于php中文网

原创

本篇文章主要介绍了尝试自己动手用react来写一个分页组件(小结),现在分享给大家,也给大家做个参考。

本文介绍了尝试自己动手用react来写一个分页组件(小结),分享给大家,具体如下:

分页效果

在线预览

github地址

效果截图(样式可自行修改):

构建项目

create-react-app react-paging-component

分页组件

1.子组件

创建 Pagecomponent.js 文件

核心代码:

初始化值

 constructor(props) {
    super(props)
    this.state = {
      currentPage: 1, //当前页码
      groupCount: 5, //页码分组,显示7个页码,其余用省略号显示
      startPage: 1, //分组开始页码
      totalPage:1 //总页数
    }
  }

动态生成页码函数

I-Shop购物系统
I-Shop购物系统

部分功能简介:商品收藏夹功能热门商品最新商品分级价格功能自选风格打印结算页面内部短信箱商品评论增加上一商品,下一商品功能增强商家提示功能友情链接用户在线统计用户来访统计用户来访信息用户积分功能广告设置用户组分类邮件系统后台实现更新用户数据系统图片设置模板管理CSS风格管理申诉内容过滤功能用户注册过滤特征字符IP库管理及来访限制及管理压缩,恢复,备份数据库功能上传文件管理商品类别管理商品添加/修改/

下载
createPage() {
    const {currentPage, groupCount, startPage,totalPage} = this.state;
    let pages = []
    //上一页
    pages.push(
  • 上一页
  • ) if (totalPage <= 10) { /*总页码小于等于10时,全部显示出来*/ for (let i = 1; i <= totalPage; i++) { pages.push(
  • {i}
  • ) } } else { /*总页码大于10时,部分显示*/ //第一页 pages.push(
  • 1
  • ) let pageLength = 0; if (groupCount + startPage > totalPage) { pageLength = totalPage } else { pageLength = groupCount + startPage; } //前面省略号(当当前页码比分组的页码大时显示省略号) if (currentPage >= groupCount) { pages.push(
  • ···
  • ) } //非第一页和最后一页显示 for (let i = startPage; i < pageLength; i++) { if (i <= totalPage - 1 && i > 1) { pages.push(
  • {i}
  • ) } } //后面省略号 if (totalPage - startPage >= groupCount + 1) { pages.push(
  • ···
  • ) } //最后一页 pages.push(
  • {totalPage}
  • ) } //下一页 pages.push(
  • 下一页
  • ) return pages; }

    页码点击函数:

    //页码点击
      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)
      }

    上一页和夏夜点击事件

    //上一页事件
      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)
      }

    组件渲染到DOM上

    render() {
        const pageList = this.createPage();
        return (
          
      {pageList}
    ) }

    2.父组件

    创建 Pagecontainer.js 文件

    父组件完整代码

    import React, {Component} from 'react'
    import Pagecomponent from '../components/Pagecomponent'
    import data from '../mock/tsconfig.json'
    
    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 (
          

    {this.state.dataList}

    ) } } export default Pagecontainer

    上面是我整理给大家的,希望今后会对大家有帮助。

    相关文章:

    在Vue2.0系列中如何使用过滤器?

    在vue项目中通过tween方法如何实现返回顶部

    使用vue如何判断input输入内容全是空格?

    相关专题

    更多
    php源码安装教程大全
    php源码安装教程大全

    本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

    150

    2025.12.31

    php网站源码教程大全
    php网站源码教程大全

    本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

    88

    2025.12.31

    视频文件格式
    视频文件格式

    本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

    90

    2025.12.31

    不受国内限制的浏览器大全
    不受国内限制的浏览器大全

    想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

    61

    2025.12.31

    出现404解决方法大全
    出现404解决方法大全

    本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

    493

    2025.12.31

    html5怎么播放视频
    html5怎么播放视频

    想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

    16

    2025.12.31

    关闭win10系统自动更新教程大全
    关闭win10系统自动更新教程大全

    本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

    12

    2025.12.31

    阻止电脑自动安装软件教程
    阻止电脑自动安装软件教程

    本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

    5

    2025.12.31

    html5怎么使用
    html5怎么使用

    想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

    2

    2025.12.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    React 教程
    React 教程

    共58课时 | 3.2万人学习

    国外Web开发全栈课程全集
    国外Web开发全栈课程全集

    共12课时 | 0.9万人学习

    React核心原理新老生命周期精讲
    React核心原理新老生命周期精讲

    共12课时 | 1万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号