概述
话不多说,代码如下(样式就不贴了,大家都懂的):
// 倒计时 import React, { Component } from 'react'; import PropTypes from 'prop-types'; export default class CountDown extends Component { static propTypes = { deadline: PropTypes.number.isRequired // 截止日期的时间戳 } constructor(props) { super(props); this.state = { day: '00', hours: '00', minutes: '00', seconds: '00' // milliseconds: '00' } } componentDidMount() { this._countDown(); } componentWillUnmount() { this.time && clearTimeout(this.time); } _countDown = () => { const currTime = +new Date(); const deadline = this.props.deadline; const dTime = deadline - currTime; if (dTime <= 0) { // 这样做更精确 clearTimeout(this.time); this.setState({ day: '00', hours: '00', minutes: '00', seconds: '00' }); return; } this.time = setTimeout(() => { this.setState(this._formatTime(dTime)); this._countDown(); }, 1000); } _formatTime = (time) => { const day = Math.floor(time / (1000 * 60 * 60 * 24)).toString().padStart(2, '0'); const hours = Math.floor(( time / (1000 * 60 * 60)) % 24).toString().padStart(2, '0'); const minutes = Math.floor(( time / (1000 * 60)) % 60).toString().padStart(2, '0'); const seconds = Math.floor(( time / 1000) % 60).toString().padStart(2, '0'); // const milliseconds = Math.floor(time % 1000); return ({day, hours, minutes, seconds }); } render() { const { day, hours, minutes, seconds } = this.state; return ( <div className="count-down"> <span>{day}</span>: <span>{hours}</span>: <span>{minutes}</span>: <span>{seconds}</span> </div> ); } }
实现效果如下:
转载于:https://www.cnblogs.com/LXY02/p/9351201.html
最后
以上就是飘逸发带为你收集整理的react 写 倒计时的全部内容,希望文章能够帮你解决react 写 倒计时所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复