Pagination 在Reactjs中构建分页
因此,我在Reactjs中构建分页的方式有点奇怪,但它对我来说是有效的,我,怎么会想说第5页上的第一个5 1-5 show me 5-max。但我不清楚如何做到这一点 这就是我目前拥有的:Pagination 在Reactjs中构建分页,pagination,reactjs,Pagination,Reactjs,因此,我在Reactjs中构建分页的方式有点奇怪,但它对我来说是有效的,我,怎么会想说第5页上的第一个5 1-5 show me 5-max。但我不清楚如何做到这一点 这就是我目前拥有的: render: function() { // Do we have more then one page? if (this.props.maxPages > 0){ // We have to add one to the max pages that come b
render: function() {
// Do we have more then one page?
if (this.props.maxPages > 0){
// We have to add one to the max pages that come back.
var pageLink = this.props.maxPages + 1;
var currentPage = this.props.currentPage;
var liElements = []
// Build [<<][<] for the user.
if (pageLink > 1) {
liElements.push(<li><a href="#posts?page=1"><<</a></li>);
liElements.push(<li><a href={this.pageSubtraction(currentPage, pageLink)}><</a></li>);
}
// Build the individual [x][y][z] links.
for (var i = 1; i <= pageLink; i++) {
liElements.push(<li key={i} id={i}><a href={"#posts?page="+i}>{i}</a></li>);
}
// Build the [>][>>] for the user.
if (pageLink > 1) {
liElements.push(<li><a href={this.pageAddition(currentPage, pageLink)}>></a></li>);
liElements.push(<li><a href={"#posts?page="+pageLink}>>></a></li>);
}
return (<ul className="pagination">{liElements}</ul>);
}else{
// Return nothing.
return ( <div></div> );
}
}
这将建立我[]这是伟大的,但他们是没有限制的
此时:
pageLink=6最大页数-我知道变量名
currentPage=1您当前所在的页面
所以我需要的是:
[]选择第5页[],但我不确定当前设置是否允许我这样做。这是一个有点复杂的算法,并没有提供所有详细信息。与其在这里担心标记,不如从表示应该绘制的内容的纯数据结构开始
Pagination = function(props){
var pages = props.maxPages + 1;
var current = props.currentPage;
var links = [];
// leading arrows
if (current > 0) {
links.push([0, "<<"]);
links.push([current - 1, "<"]);
}
for (var i=current-3; i<current+4; i++) {
if (i > 0 && i < pages) {
links.push([i, i]);
}
}
// tailing arrows
if (current < pages) {
links.push([current + 1, ">"]);
links.push([pages - 1, ">>"]);
}
return JSON.stringify(links, null, 4);
};
现在我们得到了这样的东西。您还可以轻松编写单元测试,以确保得到正确的结果
[
[
0,
"<<"
],
[
1,
"<"
],
[
1,
1
],
[
2,
2
],
[
3,
3
],
[
4,
4
],
[
5,
5
],
[
3,
">"
],
[
7,
">>"
]
]
一旦在这里获得了正确的数据,就可以通过表示函数映射这些数据
function PageLink(i, char){
character = character || String(i);
return (
<li key={char}>
<a href={"#posts?page="+i}>{char}</a>
</li>
);
}
Pagination = function(props){
/* same code as before */
return links.map(function(x){
return PageLink(x[0], x[1]);
});;
};
另外,当你的答案符合你的要求时,请在这里发布一个答案,以便其他人可以使用它作为他们分页的基础 这是一个有点复杂的算法,并没有提供所有细节。与其在这里担心标记,不如从表示应该绘制的内容的纯数据结构开始
Pagination = function(props){
var pages = props.maxPages + 1;
var current = props.currentPage;
var links = [];
// leading arrows
if (current > 0) {
links.push([0, "<<"]);
links.push([current - 1, "<"]);
}
for (var i=current-3; i<current+4; i++) {
if (i > 0 && i < pages) {
links.push([i, i]);
}
}
// tailing arrows
if (current < pages) {
links.push([current + 1, ">"]);
links.push([pages - 1, ">>"]);
}
return JSON.stringify(links, null, 4);
};
现在我们得到了这样的东西。您还可以轻松编写单元测试,以确保得到正确的结果
[
[
0,
"<<"
],
[
1,
"<"
],
[
1,
1
],
[
2,
2
],
[
3,
3
],
[
4,
4
],
[
5,
5
],
[
3,
">"
],
[
7,
">>"
]
]
一旦在这里获得了正确的数据,就可以通过表示函数映射这些数据
function PageLink(i, char){
character = character || String(i);
return (
<li key={char}>
<a href={"#posts?page="+i}>{char}</a>
</li>
);
}
Pagination = function(props){
/* same code as before */
return links.map(function(x){
return PageLink(x[0], x[1]);
});;
};
另外,当你的答案符合你的要求时,请在这里发布一个答案,以便其他人可以使用它作为他们分页的基础 下面是创建分页选项的完整代码。全文可用
下面是创建分页选项的完整代码。全文可用