久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日頭條 焦點資訊 營銷之道 企業報道 淘寶運營 網站建設 軟件開發 400電話
  當前位置: 首頁 » 資訊 » 軟件開發 » 正文

用react寫一個分頁組件的示例

放大字體  縮小字體 發布日期:2018-02-11  來源:企業800網  作者:新格網  瀏覽次數:286  【去百度看看】
核心提示:本文主要和大家介紹用react來寫一個分頁組件(小結),希望能幫助大家學會用react來寫一個分頁組件,下面我們一起來學習一下吧。
本文主要和大家介紹用react來寫一個分頁組件(小結),希望能幫助大家學會用react來寫一個分頁組件,下面我們一起來學習一下吧。

效果截圖(樣式可自行修改):

構建項目


create-react-app react-paging-component

分頁組件

1.子組件

創建 Pagecomponent.js 文件

核心代碼:

初始化值


 constructor(props) {
    super(props)
    this.state = {
      currentPage: 1, //當前頁碼
      groupCount: 5, //頁碼分組,顯示7個頁碼,其余用省略號顯示
      startPage: 1, //分組開始頁碼
      totalPage:1 //總頁數
    }
  }

動態生成頁碼函數


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) {
      
      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 {
      

      //第一頁
      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;

  }

頁碼點擊函數:


//頁碼點擊
  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 (
      <ul className="page-container">
        {pageList}
      </ul>
    )
  }

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 (
      <p>
        <p>
          {this.state.dataList}
        </p>
        <Pagecomponent pageConfig={this.state.pageConfig}
                pageCallbackFn={this.getCurrentPage}/>
      </p>

    )
  }
}
export default Pagecontainer

相關推薦:

jQuery封裝的分頁組件詳解

利用vue2.0實現的分頁組件

基于vue2的table分頁組件實現方法

以上就是用react寫一個分頁組件的示例的詳細內容,更多請關注php中文網其它相關文章!

 
關鍵詞: react,示例,組件
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網站首頁 | 關于我們 | 聯系方式 | 使用協議 | 版權隱私 | 網站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網站留言 | RSS訂閱 | 吉ICP備11001726號-6
企業800網 · 提供技術支持