react 翻书效果_React实现翻页功能
由于项目中遇到简单的类似于轮播图中,左右翻页功能,首先明白需求是这样的:
一个页面最多展示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 (
![](/static/img/tools/arrow_left.png)
{
this.state.datas.map( (value,index) => {
return(
)
})
}
![](/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实现翻页功能相关推荐
- Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)
需要图片集和源码请点赞关注收藏后评论区留言~~~ 一.平滑翻书效果 与纸质书籍类似,手机上的电子书也有很多页,逐页浏览可采用翻页视图,然而翻页视图犹如一幅从左到右的绵长画卷,与现实生活中上下层叠的书籍 ...
- ppt怎么把图片做成翻书效果_ppt页面翻书效果怎么做?ppt翻书效果制作
ppt页面翻书效果怎么做?ppt翻书效果制作 ppt页面翻书效果怎么做?是否早已厌烦平平常常的PPT展现方法呢?是否早已反感了没什么创意的图片展示方式呢?是否还莫有了解PPT的翻书动画效果呢?今日就和 ...
- winform实现翻书效果_虚拟翻书系统解决方案
如今,越来越多的智能系统进入了人们的生活,为人们提供更多的方便与娱乐.下面为大家介绍一款虚拟翻书系统,看看它能为人们带来什么? 虚拟翻书系统解决方案 目前主流的虚拟翻书系统主要设备有: 1.硬件设备: ...
- android fragment实现翻书效果,viewpager实现翻页效果(fragment)
viewpager的运用核心在于适配器的编写,及最终的setadapter(adapter) 谷歌官方认为,ViewPager应该和Fragment一起使用时,此时ViewPager的适配器是Frag ...
- ppt怎么把图片做成翻书效果_ppt如何制作翻书效果 ppt翻书效果怎么制作
相信说起PPT,很多的网友经常都会使用到,无论是工作党还是学生党,经常都会使用到PPT进行会议演示吧,而PPT中有非常多的繁杂的各种制作效果,其中有一个翻书效果,好多网友都表示不知道怎么制作,那么下面 ...
- html5实现3d翻页效果,利用css3 3d transform制作超逼真翻书效果
本教程给大家带来一个非常有创意的翻书效果,使用的是css 3D transforms属性和css transitions属性.这里将给你展示两种不同的图书设计:精装书和平装书.这两种设计只需要简单的改 ...
- 手机html5翻页效果代码,jquery html5手机端翻书效果_手指滑动书本翻页效果代码
特效描述:jquery html5手机端翻书 手指滑动 书本翻页效果.显现手机端翻书效果,支持手拖动翻页 代码结构 1. 引入JS 2. HTML代码 function loadApp() { // ...
- 如何用css实现左右翻页效果图,如何利用CSS3实现3D翻书效果
这篇文章主要介绍了CSS3实现3D翻书效果,基于CSS3新属性Animation及transform实现类似翻书效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先上效果图:(样式有点丑,可以忽 ...
- ppt怎么把图片做成翻书效果_ppt怎么做出翻页效果图文教程
怎么才能把ppt做出翻页效果呢?新手不会,上网找怕麻烦,而且教程太乱没有统一的答案怎么办,哪里有更好的方法?下面学习啦小编就为你提供ppt如何做出翻页效果的方法啦! ppt做出翻页效果的方法步骤 首先 ...
- html翻页特效实现原理,CSS3实现超炫3D翻书效果(二)
上回书,我们已经简单实现如何翻一页.好,现在我们复习一下.翻书效果的基本原理,请看下html布局: 简单再次说明下:box为大盒子,主要提供显示区域的左部分:page为要翻转的页面,其包含正面(fro ...
最新文章
- 软件测试的准入准出是什么?标准是什么?
- 如何在企业推行OKR?
- (转载)在服务器上排除问题的头5分钟
- python学习之简介
- lambda函数 python菜鸟教程-Python3 函数
- 微信公众号前端支付实现
- 教你,用java生成验证码(这这太简单了了吧!!!!!!!)
- PHP 读写 COOKIE
- 小黄鸡 php,Simsimi (小黄鸡) API接口(PHP)公布,小黄鸡API接口非官方PHP版本来啦...
- 化工原理计算机辅助设计,化工原理课程设计总结与体会
- python羊车门问题_python羊车门问题的正确解答
- Repeater的 Items属性、Items里面的控件有几个?
- Eclipse 创建JavaWeb工程
- 从南极到你家,易开得,一支“中国芯”的奇幻漂流
- 为什么好学生,学不好编程?
- 牛奶可乐经济学之Q7:为什么官僚们喜欢使用语焉不详的句子?
- 网站优化和SEO的差别
- 关于信号功率、增益的表示 dbi dbm
- java实现医嘱管理系统,基于jsp的医嘱管理系统-JavaEE实现医嘱管理系统 - java项目源码...
- 制作gif动态图片,使用哪款软件,经验分享