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-width: 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;
}
}

  

Next.js 分页组件的更多相关文章

  1. 手把手教你使用Vue/React/Angular三大框架开发Pagination分页组件

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...

  2. 基于Vue.js的表格分页组件

    有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫BootPage. 不了解Vue.js的童鞋 ...

  3. [js开源组件开发]ajax分页组件

    ajax分页组件 我以平均每一周出一个开源的js组件为目标行动着,虽然每个组件并不是很庞大,它只完成某一个较小部分的工作,但相信,只要有付出,总会得到回报的.这个组件主要完成分页的工作. 这张图里显示 ...

  4. Vue.js的表格分页组件

    转自:http://www.cnblogs.com/Leo_wl/p/5522299.html 有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更 ...

  5. JS表格分页组件:fupage的设计思路和详细使用方法(未来考虑开源,争取在2015年)

    一.背景         之前在秒针工作的时候,某js高级project师写了非常多自己的组件.当中一套是分页组件.叫做st-grid. 只是在我看来,bug太多.我常常给他反馈bug,我也不清楚为啥 ...

  6. JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)

    一.背景         之前在秒针工作的时候,某js高级工程师写了很多自己的组件,其中一套是分页组件,叫做st-grid.不过在我看来,bug太多,我经常给他反馈bug,我也不清楚为啥别人没有发现. ...

  7. 电子商务系统的设计与实现(十三):分页组件,从前到后,从JS到Java

    一.概述   学习实践Web开发5年多了,直到今天,我才算真正实现了最基本最常用的分页组件. 包括:    a.前端JS异步加载并渲染:    b.前端JSP.Freemarker.Struts标签渲 ...

  8. asp.net mvc4+mysql做一个简单分页组件(部分视图)

    在开始做mysql分页功能组件前,便设定的是要有一定可复用性.先在项目里Views文件夹下右键新建名为_PaginationComponent.cshtml,这里html及css我采用的bootstr ...

  9. ReactJS实现的通用分页组件

    大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...

随机推荐

  1. SQL 姓名,联系方式-脱敏

    SELECT ORDER_PROJECT.project_type AS attribute, ORDER_PROJECT.order_num, ,), "*") AS pv, C ...

  2. 神州数码DHCP及DHCP中继配置

    实验要求:掌握DHCP及DHCP中继配置方法 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface g0/5 进入端口 ip a ...

  3. GLog 初始化说明

    #include <iostream> #include <glog/logging.h> int main(int argc, char* argv[]) { google: ...

  4. PSP耗时

  5. Podfile

    platform :ios, "9.0" target "APPName" dopod 'AFNetworking'pod 'SVProgressHUD'pod ...

  6. 同时兼容ie8 与ie11

    最近公司发文规定说程序要必须同时兼容ie8与ie11 下面是在修改程序时遇到的一些问题. 1:new Date 获取年的问题,在ie8及以下ie以下版本是可以用getYear()方法来获取年得到的数值 ...

  7. 小妖精的完美游戏教室——人工智能,A*算法,实现篇

    //================================================================//// Copyright (C) 2017 Team Saluk ...

  8. MySQL更新死锁问题【转,纯为学习】

    https://blog.csdn.net/a12345555555/article/details/72828366 -08-13 15:12:44 [ERROR] com.zhubajie.cou ...

  9. Git创建本地仓库、与远程仓库关联

    不知道对不对,不过我这么干能用了嘿嘿 下载好git以及配置密钥什么的就不说了,网上一p眼子 在本地找个变成仓库的文件夹,打开git命令行工具cd到这个目录,然后git init创建本地仓库 然后上gi ...

  10. ROS * 了解学习urdf的内容格式及编写

    <?xml version="1.0" ?> 声明文件使用xml描述 <robot name="robot_name">定义这是一个机器 ...