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实现的版本,首先上图看下效果 ...
随机推荐
- 12_jvm性能优化专题1——top命令和jstack联合定位
一:异常项目构建 1.通过while死循环构造异常常见: package com.huawei.jvm; import org.springframework.stereotype.Controlle ...
- php 品牌全车零件订购平台( 带采集数据 及 账号自动登陆【已绕过https证书加密】,php源码 ,QQ: 876635409 )
php捷豹路虎 品牌全车零件订购平台 ( 带采集数据 及 账号自动登陆[已绕过https证书加密],php源码 ,QQ: 876635409 [由于咨询用户太多,请备注:汽车配件]) 一.php+m ...
- Django 1.9 + celery + django-celry 实现定时任务
celery可以进行任务异步处理,celery还有一种Celery的常用模式便是执行定期任务. 执行定期任务时, Celery会通过celerybeat进程来完成. Celerybeat会保持运行, ...
- Golang的数组
Golang数组 package main import "fmt" func main() { // 定义一个长度为10,元素类型为string的值 li2 := [10]str ...
- Github Page搜索工具更新 - 探索功能
探索功能提供了一种快速访问有意思的Github Page的途径,每周探索功能会更新有趣的搜索词条,你可以点击感兴趣的词条来获取该词条对应的Github Page. 首批Github Page探索词条包 ...
- mysql技巧:按条件筛选,然后替换
1.按条件筛选,然后替换 select * from phome_ecms_tv where playurl like '%关键词%';update phome_ecms_tv set myorder ...
- Python全栈之路----常用模块----logging模块
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- 播放器: AVPlayer
AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://flv2.bn.netease.com/vi ...
- python爬虫之常见的加密方式
前言 数据加密与解密通常是为了保证数据在传输过程中的安全性,自古以来就一直存在,古代主要应用在战争领域,战争中会有很多情报信息要传递,这些重要的信息都会经过加密,在发送到对应的人手上. 现代 ,在网络 ...
- async await 同时发起多个异步请求的方法
@action getBaseInfo = async() => { let baseInfo; try { baseInfo = await getBaseInfo(this.id); if ...