React中发送验证码 倒计时效果组件编写

(1)可以通过使用“react-timer-mixin”插件实现倒计时效果,原理同下面的思路一样此处不在详细解说
(2)自己用原生定时器方法实现 1 import React,{Component} from ‘react‘;
 2 import {Button } from ‘antd-mobile‘;
 3 import PropTypes from ‘prop-types‘;
 4 class SendVerifyCode extends Component{
 5     constructor(props){
 6         super(props)
 7         this.state={
 8             count:0,
 9             counting:false
10         }
11     }
12     componentWillReceiveProps(nextProps){
13         //根据父组件传过来的验证结果,判断是否启用倒计时
14         if(nextProps.isSend){
15             this.send();
16             //发送完验证码成功之后,通知父组件关闭发送开关
17             nextProps.onSuccessSend()
18         }
19     }
20     setInterval=() => {
21         /*此处正是定时器运用的巧妙之处,以及对定时器返回值的理解程度体现
22         定时器必须在一个函数中赋值给一个属性,在state中赋值就不行,定时器会自执行,
23         因此必须在一个不会自动执行的函数中把定时器ID赋值给一个变量保存
24         此ID可以作为clearInterval()的参数,用于清除定时器*/
25         this.timer = setInterval(this.countDown, 1000)
26     }
27     send=()=>{
28         this.setState( { counting: true, count: 60});
29         this.setInterval();
30     }
31     countDown = () =>{
32         const { count } = this.state;
33         if ( count === 1) {
34             this.clearInterval();
35             this.setState( { counting: false });
36         } else {
37             this.setState( { counting: true, count: count - 1});
38         }
39     }
40     clearInterval=() =>{
41         clearInterval(this.timer)
42     }
43     phone =() => {
44         //验证手机号是否符合规则,符合规则就设置props.isSend为true,启用定时器,否则提示错误信息
45         this.props.onhandlePhone()
46         //console.log(‘222‘)
47     }
48     componentWillUnmount() {
49         this.clearInterval();
50     }
51     render(){
52         // console.log(TimerMixin)
53         // console.log(this.props.isSend)
54         let {count,counting} = this.state;
55         return(
56               <Button
57                 disabled={counting}
58                 className="verificationCode"
59                 onClick={this.phone}
60                 >{
61                 counting? `${count}秒后重发` :‘获取验证码‘
62                 }</Button>
63         )
64
65     }
66 }
67 SendVerifyCode.propTypes = {
68     isSend: PropTypes.bool.isRequired,
69     onhandlePhone: PropTypes.func.isRequired,
70     onSuccessSend: PropTypes.func.isRequired
71 }
72
73 SendVerifyCode.defaultProps = {
74     isSend: false
75 }
76 export default SendVerifyCode;

原文地址:https://www.cnblogs.com/dglblog/p/9473669.html

时间: 2024-10-20 16:38:02

React中发送验证码 倒计时效果组件编写的相关文章

安卓发送验证码倒计时效果和自动获取验证码并填充到输入框

在注册,实名认证.修改手机号码的,我们都会用发送验证码的功能,在这里经常就会涉及到2个效果, 第一个:发送验证码倒计时效果: 第二个:自动获取接收到的短信,并且填充验证码. 先来说倒计时效果: 其实很简单,就是一个计时器.每秒刷新一次,倒计时完了.就可以重新点击获取了. <pre name="code" class="java">btn_getYzm.setEnabled(false); btn_getYzm.setBackgroundResource(

jQuery实现的手机发送验证码倒计时效果代码分享

这是一款基于jquery实现的手机发送验证码倒计时效果代码,可实现实时显示秒数倒计时的功能,还可实现对手机号码格式验证的功能,是一款常用的网站注册发送手机验证码特效代码. 效果描述:注册一个网站,当需要发送验证码到手机上的时候,我们经常碰到这样的效果:首先检测手机是否符合1开头,11位数字的格式:若不符合,则提示错误信息并返回false:否则提交给后台,后台确定接收后返回一个值,发送按钮变为灰色并倒计时. 运行效果: 年利率高达14.4% 上海投融理财,20万起投,年化收益14.4% 房产抵押,

react native中的聊天气泡以及timer封装成的发送验证码倒计时

今天看来情书写的文章,研究了一下大佬写的文章,自己做一点总结. 其实,今天我想把我近期遇到的坑都总结一下:1.goBack的跨页面跳转,又两种方法,一可以像兔哥那样修改navigation源码,二可以用navigationActions     2.父子组件的传值,一可以用callBack  二可以用pubsub发布订阅模式 三可以用manager事件监听(a页面要显示的内容 有两种形式,一是从manager主动接收,也就是说不需要点击什么的获取数据,而是时时监听manager里数据的变化,第二

Andorid实现点击获取验证码倒计时效果

这篇文章主要介绍了Andorid实现点击获取验证码倒计时效果,这种效果大家经常遇到,想知道如何实现的,请阅读本文 我们在开发中经常用到倒计时的功能,比如发送验证码后,倒计时60s再进行验证码的获取,为了方便以后使用,这里做个记录,讲讲倒计时器的实现. 1.先进行倒计时工具类的封装 1 public class CountDownTimerUtils extends CountDownTimer { 2 private TextView mTextView; 3 4 /** 5 * @param

js 发送验证码倒计时

<input  type="text"   name=''  id="btn"> //发送验证码倒计时var wait=30; function time(o) { if (wait == 0) { o.removeAttribute("disabled"); o.value="免费获取验证码"; wait = 30; }else{ o.setAttribute("disabled", true

js/jq实现获取手机验证码倒计时效果

众所周知在前段的工作中注册信息或获取当前手机号信息等需求,我们基本上都要涉及到手机号验证码,在网络上搜索的案例杂乱无章,用的时候全是坑,真心不想用了,然后自己写了一个获取手机验证码的倒计时效果.有需求的伙伴们可以看看怎么实现的. 如何获取手机验证码? 小月不知道大家是利用什么平台去获取验证码的,但是告诉大家我是在哪个平台获取的. LeanCloud :https://leancloud.cn/ 文档:https://leancloud.cn/docs/sms_guide-js.html 在这个平

android中的验证码倒计时

1.如图所示,要实现一个验证码的倒计时的效果                             2.实现 图中获取验证码那块是一个button按钮 关键部分,声明一个TimeCount,继承自CountDownTimer /*验证码倒计时*/private class TimeCount extends CountDownTimer{ /** * @param millisInFuture 总时间长度(毫秒) * @param countDownInterval 时间间隔(毫秒),每经过一

发送验证码倒计时

//倒计时-(void)startTime{        //重新发送验证码    NSDictionary *dic = @{@"mobileNumber":self.phoneNumber};    [HttpTool1 post:GetRegVerificationCodeUrl params:dic success:^(id mydata) {        NSLog(@"成功----");        NSString *str = [[NSStri

jQuery手机发送验证码倒计时代码

<!DOCTYPE> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="http://s29.xtest.tech/res/bxdapp/js/jquery.min.js"></script> <script type="text/javascript"&