跟窝一起学习鸭~~

//index.js

import React from 'react';

import ReactDOM from 'react-dom';

import './index.css';

import App from './App.jsx';

import registerServiceWorker from './registerServiceWorker';

ReactDOM.render( < App / > , document.getElementById('root'));

registerServiceWorker();

//app.jsx根App

import React, {

Component

} from 'react';

import TotalQty from './components/TotalQty'

class App extends Component {

render() {

return (

)

}

}

export default App;

//TotalQty.jsx

import React, { Component } from 'react'

import './totalQty.less'

import FlipOverCounter from './flipOver/FlipOverCounter'

export class TotalQty extends Component {

// 父组件先定义state通过props传值

constructor(props) {

super(props)

//定义初始的值最小为50 长度这个日历是7位数

// 时间是60000ms更新一次吗?

this.state = {

min: 50,

max: 0,

time: 60000,

len: 7

}

}

componentDidMount() {

const a = 100;

//a是什么东西,为了设置最大值为50+100吗?

const ths = this;

ths.setState({

max: ths.state.max + a

})

//每这个时间60000就清除一次定时器

this.time1 = setInterval(function () {

ths.setState({

max: ths.state.max + a,

min: ths.state.max

})

}, 60000)

}

render() {

const { min, max, time, len } = this.state;

return (

min={min}

max={max}

time={time}

len={len}

/>

)

}

}

export default TotalQty

//翻页FlipOverCounter.jsx

//有些代码不是很懂,但是小姐姐很赞,我很喜欢写这个代码的小姐姐

//FlipOverCounter.jsx

import React, { Component } from 'react'

import PropTypes from 'prop-types'

import './flipOverCounter.less'

export class FlipOverCounter extends Component {

constructor(props) {

super(props)

//通过props接收父组件传过来的值

this.state = {

min: props.min,

max: props.max,

time: props.time,

len: props.len,

currentNums: this.zfill(props.min)

}

this.resetNo = this.resetNo.bind(this)

this.run = this.run.bind(this)

}

componentDidMount() {

//页面挂载就挂载resetNo

this.resetNo()

}

//补0zfill传入值

zfill(num) {

var s = "000000000" + num;

// 当长度到什么的时候就传入的值?

return s.toString().substr(s.length - this.props.len).split("");

}

//初始化数值填入

resetNo() {

const { min } = this.state;

// 当前的值

const currentNums = this.zfill(min)

this.setState({ currentNums }, function () {

this.run()

})

}

//初始化执行

run() {

const { min, max, time, currentNums } = this.state;

const difference = max - min;

if (difference < 1) return;

//每次要执行动画的时间

let t = Math.round(time / difference);

let speedTyp = 'normal'

//执行速度class 定义了2种不同程度的速度控制样式

if (t >= 300) {

if (t > 1500) t = 1500;

speedTyp = 'normal'

} else {

if (t < 100) t = 100;

speedTyp = 'quick'

}

let newCount = min;

//翻页

function increase() {

if (newCount === max || newCount > max) {

clearInterval(this.timer1);

return false;

}

//慢速一页页翻

if (speedTyp === 'normal') {

newCount++;

} else {

if (difference > 800 && t <= 200) {

t = 200;

//直接设置数字

newCount = newCount + Math.floor(difference / (time / 200))

} else {

//快速翻

newCount = newCount + 2

}

}

const newNums = this.zfill(newCount)

this.setState({ speedTyp, currentNums: newNums })

}

//执行翻页

if (this.timer1) clearInterval(this.timer1);

this.timer1 = setInterval(increase.bind(this), t);

}

componentWillReceiveProps(props) {

//resetNo()重新

if (Object.keys(props)) {

//props值改变,重新在setState

if (props.max !== this.state.max) {

this.setState({

min: props.min,

max: props.max,

time: props.time,

len: props.len

}, function () {

this.resetNo()

})

}

}

}

render() {

const { len, currentNums } = this.state;

// 这边看不懂

const flipItems = currentNums.map((value, idx) => {

let preIndx = value === "0" ? 9 : value * 1 - 1;

return (

{Array.from({ length: 10 }, (key, j) => j.toString()).map((sval, sdx) => {

return (

{sdx}

{sdx}

)

})

}

{

(len - idx - 1) % 3 === 0 && (len - idx - 1) !== 0 ?

}

)

})

return (

{flipItems}

)

}

}

//静态类型检验

FlipOverCounter.propTypes = {

min: PropTypes.number, //初始数值

max: PropTypes.number, //最大数字

time: PropTypes.number, //翻页总时长

len: PropTypes.number //数字是几位数

}

FlipOverCounter.defaultProps = {

min: 0,

max: 0,

time: 120000,

len: 6

}

export default FlipOverCounter

react 翻书效果_React-FlipOver-Counter(日历翻页)相关推荐

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

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

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

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

  3. 手机翻书效果html,移动端实现翻书效果

    content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scal ...

  4. android控件翻书效果,android ViewPager实现滑动翻页效果实例代码

    实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下:import android.content.Context;import androi ...

  5. android实现翻书效果(文本和图片的翻书)

    源码不好上传,有需要者可以加我,联系我发你.... 转载于:https://www.cnblogs.com/zfrr/archive/2012/06/15/2550216.html

  6. winform实现翻书效果_如何用PPT实现翻书效果?

    在PPT中,我们需要配合内容使用不同的动画效果,加深观众对内容的理解.当内容是讲述故事.过场片段,或是老师的课件讲解教材时,有一个实用好看的动画效果,就是"翻书效果"动画. 例如上 ...

  7. 自定义控件android特效,Android自定义控件eBook实现翻书效果实例详解

    本文实例讲述了Android自定义控件eBook实现翻书效果的方法.分享给大家供大家参考,具体如下: 效果图: Book.java文件: package com.book; import androi ...

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

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

  9. settimeout怎么用_怎么实现一个3d翻书效果

    本篇主要讨论以下两种翻书动画的实现: 第一种是整页翻转的效果: 这种整页翻转的效果主要是做rotateY的动画,并结合一些CSS的3d属性实现. 第二种折线翻转的效果,如下图所示: 主要是通过计算页面 ...

  10. 前端学习(284):纯css实现翻书效果

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

最新文章

  1. CSS之布局(外边距的折叠)
  2. 兼容的min-height
  3. Microsoft C++ 异常: 内存位置处的 std::bad_alloc问题解决办法
  4. 活动目录概念和灾难恢复
  5. 全能地图下载器最终破解版及安装教程【最终破解版、完美注册、最全教程、支持win10】
  6. 信捷plc485通信上位机_STM32L476R快速入门——串口与上位机通信
  7. 同为前端工程师,待遇差别居然这么大!
  8. “无法访问 您可能没有权限使用网络资源”解决办法
  9. 《白话大数据与机器学习》读书笔记1
  10. 疫情下的美国娱乐业 | 游戏里的演唱会引千万人参加, 你会买票吗?
  11. Linux权限设置方法
  12. 了解BigDecimal常用坑,不迷路
  13. 进制转换应用场景_【Android】单位换算软件来袭,帮你解决生活中所有的进制换算问题,让你轻松秒变大神!...
  14. 华硕服务器不分区重装系统,华硕笔记本重装系统不能进入系统怎么办
  15. 搭建BeagleBoard-x15+linux4.9+ubuntu16.04
  16. 天平游码读数例题_天平游码怎么读数?
  17. golang —— go语言科学记数法使用
  18. c语言电报,[编程入门]电报加密-题解(C语言代码)
  19. 当你的才华撑不起你的野心的时候,你就应该努力
  20. 知道2020年计算机二级考试成绩,2020年9月计算机二级考试成绩可以查了 多少分及格...

热门文章

  1. HTTP代理穿透原理
  2. 四种免费英汉电子词典软件简评
  3. C#上位机开发源码基于RS485通讯总线的ModbusRtu协议,支持用户权限管理
  4. python生成html报告
  5. 01-网络归划与实施设计应用主、备网络,静态路由和HSRPBGP
  6. B站视频下载软件分享
  7. C#-飞行棋小游戏的前识 067
  8. JavaWeb 宠物领养管理系统实现(源码分享)
  9. 将本地的word文档转为markdown(带图片)发布到CSDN
  10. 【ML31】Advanced K-means clustering algorithm