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-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 分页组件的更多相关文章
- 手把手教你使用Vue/React/Angular三大框架开发Pagination分页组件
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...
- 基于Vue.js的表格分页组件
有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫BootPage. 不了解Vue.js的童鞋 ...
- [js开源组件开发]ajax分页组件
ajax分页组件 我以平均每一周出一个开源的js组件为目标行动着,虽然每个组件并不是很庞大,它只完成某一个较小部分的工作,但相信,只要有付出,总会得到回报的.这个组件主要完成分页的工作. 这张图里显示 ...
- Vue.js的表格分页组件
转自:http://www.cnblogs.com/Leo_wl/p/5522299.html 有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更 ...
- JS表格分页组件:fupage的设计思路和详细使用方法(未来考虑开源,争取在2015年)
一.背景 之前在秒针工作的时候,某js高级project师写了非常多自己的组件.当中一套是分页组件.叫做st-grid. 只是在我看来,bug太多.我常常给他反馈bug,我也不清楚为啥 ...
- JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)
一.背景 之前在秒针工作的时候,某js高级工程师写了很多自己的组件,其中一套是分页组件,叫做st-grid.不过在我看来,bug太多,我经常给他反馈bug,我也不清楚为啥别人没有发现. ...
- 电子商务系统的设计与实现(十三):分页组件,从前到后,从JS到Java
一.概述 学习实践Web开发5年多了,直到今天,我才算真正实现了最基本最常用的分页组件. 包括: a.前端JS异步加载并渲染: b.前端JSP.Freemarker.Struts标签渲 ...
- asp.net mvc4+mysql做一个简单分页组件(部分视图)
在开始做mysql分页功能组件前,便设定的是要有一定可复用性.先在项目里Views文件夹下右键新建名为_PaginationComponent.cshtml,这里html及css我采用的bootstr ...
- ReactJS实现的通用分页组件
大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...
随机推荐
- django学习:整体思路与方向
学习django的原因,主要是对于他的高效和兴趣,原先研究了一些,但是毫无头绪. 最近连续看了2-3天,似乎有些眉目.django主要是一个网页设计的工具就结构来说,分为project和app两个层级 ...
- git教程:撤销修改
转载:撤销修改 自然,你是不会犯错的.不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: $ cat readme.txt Git is a distributed ve ...
- excel 用VBA将所有单元格内容全部转换为文本
Sub 将所有列全部转换为文本() t=timer 'Cells(Rows.Count, 1).End(xlUp).Row 获取第一列最后一个非空单元格的行号 s = Cells(, Columns. ...
- android textiew自定义ClickableSpan无效问题
我们有个需求,需要将一段文本中的url跳转,替换成跳转我们app的某个页面.然后就开始搞,先自定义clickspan,在设置LinkMovementMethoid, 但是不管怎么搞就是不生效. 这是我 ...
- 一个python小爬虫
自定义获取豆瓣网电影TOP250里的排名数量 主要思路:先由requests库获取html基本信息,然后用BeautifulSoup来进行html.parser格式解析,逐个获取Tag属性,并且对内容 ...
- vue-----样式绑定 事件处理
<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name=& ...
- macbook远程连接报错no matching cipher found
在.ssh/目录下添加config文件 Host xxx.xxx.xxx.xxx Ciphers 3des-cbc KexAlgorithms +diffie-hellman-group1-sha1 ...
- routeros DDNS 动态域名更新IP
:local ednsuser "账号":local ednspass "密码":local ednshost "域名":local edn ...
- sqlserver 知识点
数据库知识点 1.数据库操作: 增:insert into 表名 values(值1,值2,值3) 删:delete 列名 from 表名 where 条件 改:update 表名 set =值 wh ...
- bootstrap简单使用实例
表格实例,包含bootstrap.css 和 2.1.1jquery <!DOCTYPE html> <html> <head> <meta charset= ...