由于项目中遇到简单的类似于轮播图中,左右翻页功能,首先明白需求是这样的:

一个页面最多展示6条从后台返回的数据,如果少于6条,一页全部展示,多于6条,做分页处理。

整体思路:

1.首先,声明一个空的数组arr,用于保存截取的数据;

2.其次,声明一个常量NUM,用于保存一页展示的数据条数,便于日后改需求;

3.然后在constructor里声明一个标志位flag,便于把每一次翻页的信息记录下来。(注意:这里的flag相当于一个全局变量,可以在constructor里通过this.flag = 0来声明,也可以在class外声明一个全局变量)

4.最后就是实现分页功能的原理:

①如果是向左翻页,首先判断flag标志位是否为0,如果过标志位为0,则表示已经是第一页,不能继续向左翻页,把flag置为

0,否则,每点击 一次,让flag-1;

②如果是向右翻页,则需要做两步判断:

a.首先判断是否是NUM的整数倍,如果是NUM 的整数倍(arr.length % NUM == 0),表示每页都有NUM条数据,此时

继续判断是否已经翻到最后一页(this.flag >= arr.length/NUM-1),如果已经翻页到最后一页,把flag设置为

arr.length/NUM-1,不能继续向右翻页,否 则,每点击一次让flag+1;

b.其次判断不是NUM的整数倍,最后一页不能展示NUM条数据,此时判断是否已经翻页到最后一页,如果已经翻页到最

后一页,把flag标志位设置为Math.floor(arr.length/NUM),否则,让flag+1

class Lists extends React.Component {

constructor(porps){

super(porps);

this.state = {

datas:[]

};

//设置翻页标志位全局变量

this.flag = 0;

this.getPageData = this.getPageData.bind(this);

}

componentDidMount(){

this.getPageData();

}

//页面加载时,获取前几条数据

getPageData(){

var lists = this.props.tools.slice(0,6);

this.setState({

datas:lists

})

console.log("lists------>",lists);

}

//左右翻页功能

changePage(num){

var newArr = [];

const NUM = 6;

/*var flag = 0;*/

var arr = this.props.tools;

//如果是向左滑动,首先判断标志位flag是否小于等于0

if(num == -1){

//如果标志位为0,则表示不能向左滑动,把flag标志位置位0

if(this.flag <= 0){

this.flag = 0;

newArr = arr.slice(this.flag*NUM,this.flag*NUM+NUM);

}else{

this.flag = this.flag - 1;

newArr = arr.slice(this.flag*NUM,this.flag*NUM+NUM);

}

}else{//如果向右滑动,则需要判断上限

//首先判断是不是NUM的整数倍

//如果是NUM的整数倍

/*debugger;*/

if(arr.length % NUM == 0){

//如果flag大于等于arr.length/NUM-1,把flag置为arr.length/NUM-1

if(this.flag >= arr.length/NUM-1){

flag = arr.length/NUM-1;

newArr = arr.slice(this.flag*NUM,this.flag*NUM+NUM);

}else{//如果flag小于arr.length/NUM-1

this.flag = this.flag + 1;

newArr = arr.slice(this.flag*NUM,this.flag*NUM+NUM);

}

}else{//如果不是NUM的整数倍

//如果flag大于等于Math.floor(arr.length/NUM),把flag置为Math.floor(arr.length/NUM)

if(this.flag >= Math.floor(arr.length/NUM)){

this.flag = Math.floor(arr.length/NUM);

newArr = arr.slice(this.flag*NUM,this.flag*NUM+NUM);

}else{//如果flag小于Math.floor(arr.length/NUM)

this.flag = this.flag + 1;

newArr = arr.slice(this.flag*NUM,this.flag*NUM+NUM);

}

}

}

console.log(newArr);

this.setState({

datas:newArr

})

}

render() {

return (

this.changePage(-1)}>

![](/static/img/tools/arrow_left.png)

{

this.state.datas.map( (value,index) => {

return(

)

})

}

this.changePage(1)}>

![](/static/img/tools/arrow_right.png)

)

}

}

export default Lists;

还有一点需要注意的是:由于我 把从后台获取到的数据保存到了state里面,当页面首次加载的时候,this.state = { datas:[ ] },datas为空数组;不会显示数据,后来得到了改进,在componentDidMount的时候,加载几条数据,用于第一页显示。

componentDidMount(){

this.getPageData();

}

//页面加载时,获取前几条数据

getPageData(){

var lists = this.props.tools.slice(0,6);

this.setState({

datas:lists

})

console.log("lists------>",lists);

}

react 翻书效果_React实现翻页功能相关推荐

  1. Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)

    需要图片集和源码请点赞关注收藏后评论区留言~~~ 一.平滑翻书效果 与纸质书籍类似,手机上的电子书也有很多页,逐页浏览可采用翻页视图,然而翻页视图犹如一幅从左到右的绵长画卷,与现实生活中上下层叠的书籍 ...

  2. ppt怎么把图片做成翻书效果_ppt页面翻书效果怎么做?ppt翻书效果制作

    ppt页面翻书效果怎么做?ppt翻书效果制作 ppt页面翻书效果怎么做?是否早已厌烦平平常常的PPT展现方法呢?是否早已反感了没什么创意的图片展示方式呢?是否还莫有了解PPT的翻书动画效果呢?今日就和 ...

  3. winform实现翻书效果_虚拟翻书系统解决方案

    如今,越来越多的智能系统进入了人们的生活,为人们提供更多的方便与娱乐.下面为大家介绍一款虚拟翻书系统,看看它能为人们带来什么? 虚拟翻书系统解决方案 目前主流的虚拟翻书系统主要设备有: 1.硬件设备: ...

  4. android fragment实现翻书效果,viewpager实现翻页效果(fragment)

    viewpager的运用核心在于适配器的编写,及最终的setadapter(adapter) 谷歌官方认为,ViewPager应该和Fragment一起使用时,此时ViewPager的适配器是Frag ...

  5. ppt怎么把图片做成翻书效果_ppt如何制作翻书效果 ppt翻书效果怎么制作

    相信说起PPT,很多的网友经常都会使用到,无论是工作党还是学生党,经常都会使用到PPT进行会议演示吧,而PPT中有非常多的繁杂的各种制作效果,其中有一个翻书效果,好多网友都表示不知道怎么制作,那么下面 ...

  6. html5实现3d翻页效果,利用css3 3d transform制作超逼真翻书效果

    本教程给大家带来一个非常有创意的翻书效果,使用的是css 3D transforms属性和css transitions属性.这里将给你展示两种不同的图书设计:精装书和平装书.这两种设计只需要简单的改 ...

  7. 手机html5翻页效果代码,jquery html5手机端翻书效果_手指滑动书本翻页效果代码

    特效描述:jquery html5手机端翻书 手指滑动 书本翻页效果.显现手机端翻书效果,支持手拖动翻页 代码结构 1. 引入JS 2. HTML代码 function loadApp() { // ...

  8. 如何用css实现左右翻页效果图,如何利用CSS3实现3D翻书效果

    这篇文章主要介绍了CSS3实现3D翻书效果,基于CSS3新属性Animation及transform实现类似翻书效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先上效果图:(样式有点丑,可以忽 ...

  9. ppt怎么把图片做成翻书效果_ppt怎么做出翻页效果图文教程

    怎么才能把ppt做出翻页效果呢?新手不会,上网找怕麻烦,而且教程太乱没有统一的答案怎么办,哪里有更好的方法?下面学习啦小编就为你提供ppt如何做出翻页效果的方法啦! ppt做出翻页效果的方法步骤 首先 ...

  10. html翻页特效实现原理,CSS3实现超炫3D翻书效果(二)

    上回书,我们已经简单实现如何翻一页.好,现在我们复习一下.翻书效果的基本原理,请看下html布局: 简单再次说明下:box为大盒子,主要提供显示区域的左部分:page为要翻转的页面,其包含正面(fro ...

最新文章

  1. 软件测试的准入准出是什么?标准是什么?
  2. 如何在企业推行OKR?
  3. (转载)在服务器上排除问题的头5分钟
  4. python学习之简介
  5. lambda函数 python菜鸟教程-Python3 函数
  6. 微信公众号前端支付实现
  7. 教你,用java生成验证码(这这太简单了了吧!!!!!!!)
  8. PHP 读写 COOKIE
  9. 小黄鸡 php,Simsimi (小黄鸡) API接口(PHP)公布,小黄鸡API接口非官方PHP版本来啦...
  10. 化工原理计算机辅助设计,化工原理课程设计总结与体会
  11. python羊车门问题_python羊车门问题的正确解答
  12. Repeater的 Items属性、Items里面的控件有几个?
  13. Eclipse 创建JavaWeb工程
  14. 从南极到你家,易开得,一支“中国芯”的奇幻漂流
  15. 为什么好学生,学不好编程?
  16. 牛奶可乐经济学之Q7:为什么官僚们喜欢使用语焉不详的句子?
  17. 网站优化和SEO的差别
  18. 关于信号功率、增益的表示 dbi dbm
  19. java实现医嘱管理系统,基于jsp的医嘱管理系统-JavaEE实现医嘱管理系统 - java项目源码...
  20. 制作gif动态图片,使用哪款软件,经验分享

热门文章

  1. 在线英英词典完整代码
  2. 实验室纳新语音文字记录
  3. 3d游戏建模都需要准备些什么
  4. 模糊测试--强制性安全漏洞发掘
  5. Linux如何刷新DNS缓存
  6. 小作业-drawline换成drawrectangle和fillRectangle
  7. win7系统gpt分区激活工具哪个好?
  8. 印象笔记中可以使用html语言吗,你知道吗,在印象笔记里也能用 Markdown 写作
  9. 2015年两化融合管理体系贯标试点企业
  10. 1.C语言0基础自学-从第一行代码开始