zoukankan      html  css  js  c++  java
  • Next.js 分页组件

    import React from 'react';
    import './NxPagination.less';
    
    
    export default class NxPagination extends React.Component {
    
    
        renderRange(startNo, endNo, foo) {
            var result = [];
            for (var i = startNo; i <= endNo; i++) {
                result.push(foo(i));
            }
            return result;
        }
    
        renderItem = (pno, text, pageNo) => {
            var {itemRender} = this.props;
            if (itemRender) {
                return itemRender(pno, text, pageNo);
            }
    
            if (pno === pageNo) {
                return <span>{text}</span>
            }
            return <a href={'?pn=' + pno}>{text}</a>
        };
    
        render() {
            var that = this;
            var linkcount = 8;
            var {total, pageSize, pageNo, itemRender} = this.props;
            if (pageSize <= 0) {
                pageSize = 1;
            }
    
            var pageCount = parseInt(total / pageSize, 10);
            if (total % pageSize > 0) {
                pageCount = pageCount + 1;
            }
    
            if (pageCount < 1) {
                pageCount = 1;
            }
    
    
            var startNo = 1;
            var endNo = 10;
    
            if (pageCount <= linkcount) {
                startNo = 1;
                endNo = pageCount;
            }
            else {
    
                startNo = pageNo - parseInt(linkcount / 2, 10);
                if (startNo <= 1) {
                    startNo = 1;
                }
    
                endNo = startNo + linkcount - 1;
                if (endNo >= pageCount) {
                    endNo = pageCount;
                }
            }
    
    
            return (
                <div className='NxPagination'>
                    <div className={'firstPn pagelinkitem'}>{that.renderItem(1, 'first', pageNo)}</div>
                    <div className='NxPaginationUl'>
                        {that.renderRange(startNo, endNo, function (pn) {
                            if (pageNo === pn) {
                                return <div
                                    className={'pagelinkitem pagelinkitemcurrent'}>{that.renderItem(pn, pn, pageNo)}</div>;
                            }
                            return <div className={'pagelinkitem'}>{that.renderItem(pn, pn, pageNo)}</div>;
                        })}
                    </div>
                    <div className={'lastPn pagelinkitem'}>{that.renderItem(1, 'last', pageNo)}</div>
                    <div className={'pageCount'}>共{pageCount}页</div>
                    <div className={'total'}>共{total}项</div>
                    <div className={'clearfloat'}></div>
                </div>
            )
        }
    
    }
    

      

    .NxPagination {
      * {
        box-sizing: border-box;
        font-size: 12px;
      }
    
      div {
        float: left;
      }
    
      div.clearfloat {
        clear: both;
        float: none;
      }
    
      .pagelinkitem {
        font-weight: 500;
        background: transparent;
        border: 1px solid #d9d9d9;
        text-align: center;
        line-height: 32px;
        min- 32px;
        padding: 0 5px;
        margin-right: 8px;
        border-radius: 4px;
      }
    
      .pagelinkitemcurrent {
        border-color: #379c5d;
      }
    
      a {
        color: rgba(0, 0, 0, 0.65);
        cursor: pointer;
      }
    
      span {
        color: #379c5d;
        cursor: default;
      }
    
      .pageCount, .total {
        line-height: 32px;
        margin-right: 8px;
      }
    }
    

      

  • 相关阅读:
    transition
    Java自增陷阱
    不同编码格式中,字节和字符的关系
    表单重复提交
    source folder和package的区别
    @test 测试案例不能添加参数
    http协议content-type
    jdbc的缺点和mybatis的优点
    ==和equals的区别
    spring IOC和AOP
  • 原文地址:https://www.cnblogs.com/lhp2012/p/10763556.html
Copyright © 2011-2022 走看看