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. scrapy获取页面信息

    本例子用命令行调试的方式,演示如何获取页面的特定信息: 0) 示例页面 1) 使用scrapy shell获取目标页面: scrapy shell http://bj.lianjia.com/ersh ...

  2. python logging 日志轮转文件不删除问题的解决方法

    项目使用了 logging 的 TimedRotatingFileHandler : #!/user/bin/env python # -*- coding: utf-8 -*- import log ...

  3. SVN使用方法

    用了一年多SVN了,突然想起来对SVN操作做一个总结,以免有些操作不常用而忘记,也希望可以帮到其他人. 准备工作: 在使用SVN时首先就是要在服务器安装SVN管理端(VisualSVN),在电脑上安装 ...

  4. 在typeScript+vue项目中使用ref

    因为vue项目是无法直接操作dom的,但是有时候开发需求迫使我们去操作dom. 两个办法,一个是很low的再引入jq,然后通过jq来操作,但是这样就失去了我们使用vue的意义, 可惜的是我曾经这样干过 ...

  5. python自动化框架(一)

    一.jsonpath难点分析 dic = { "error_code": 0, "stu_info": [ { "id": 2057, &q ...

  6. windows 安装touch指令

    if you are using node.js just use npm to install it on Windows: C:\npm install touch-cli -g

  7. 作业二:构建swap函数

    一.swap代码 #include<stdio.h> int main() //主函数部分 { void swap(int *m,int *n); int a,b; int *p1,*p2 ...

  8. javascript中使用"<"符号,比较大小的是字符串或对象时正确的处理方法

    <![CDATA[ var items=document.getElementsByTagName("li"); for(var i=0;i<items.length; ...

  9. admin-7

    Admin07 root tmooc 还原三台虚拟机[root@room9pc13 ~]# rht-vmctl reset classroom[root@room9pc13 ~]# rht-vmctl ...

  10. BInsertSort

    #include <bits/stdc++.h> using namespace std; #define MAXSIZE 200000 typedef int KeyType; type ...