基于vue、react实现倒计时效果


Posted in Javascript onAugust 26, 2019

本文实例为大家分享了基于vue、react实现倒计时效果的具体代码,供大家参考,具体内容如下

Vue

方案一:俩个元素

HTML:

<div id="example">
  <button @click="send">
   <span v-if="sendMsgDisabled">{{time+'秒后获取'}}</span>
   <span v-if="!sendMsgDisabled">send</span>
  </button>
</div>

JS:

var vm = new Vue({
  el: '#example',
  data() {
   return {
    time: 60, // 发送验证码倒计时
    sendMsgDisabled: false
   }
  },
  methods: {
   send() {
    let me = this;
    me.sendMsgDisabled = true;
    let interval = window.setInterval(function() {
     if ((me.time--) <= 0) {
      me.time = 60;
      me.sendMsgDisabled = false;
      window.clearInterval(interval); //停止
     }
    }, 1000);
   }
  }
 })

方案二:一个元素,改变文字

HTML:

<button type="button" @click='delusercache()' :disabled="sendMsgDisabled" v-text="btnText"></button>
//倒计时按钮禁用:disabled="sendMsgDisabled

JS:

var vm = new Vue({
  el: '#example',
  data() {
   return {
    time: 60, // 发送验证码倒计时
    sendMsgDisabled: false //按钮可用
   }
  },
  methods: {
   time(){
      this.sendMsgDisabled= true; //按钮不可用
      let interval = window.setInterval(()=> {
        this.btnText = this.time + 's重新发送'
        if ((this.time--) <= 0) {
          this.time = 120;
          this.btnText ='发送验证码'
          this.sendMsgDisabled= false; //按钮可用
          window.clearInterval(interval);
        }
      }, 1000);
    }
 })

React

引用块内容

time = () => {
    this.setState({ 
      times: this.state.times-1,
      btnText: '' + this.state.times + 's重新发送)',
      // discodeBtn: false,
      clearInterval:true
    })
    var siv = setInterval(() => {
      this.setState({ 
        times: this.state.times-1,
        btnText: '' + this.state.times + 's重新发送)',
        // discodeBtn: false,
        clearInterval:true
      }, () => {
        if (this.state.times === 0) {
          clearInterval(siv);
          this.setState({ 
            times: 60,
            btnText: '发送验证码', 
            // discodeBtn: true,
            clearInterval:false,
            phone:false,
            isDisabled:false
          })
        }
      });
    }, 1000);
  };
<button 
className={(this.state.clearInterval ? 'send-btn-disabled-m' : 'send-btn-default')} 
disabled={this.state.isDisabled} 
onClick={this.getPhone} >
{this.state.btnText}
</button>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 Javascript
如何学习Javascript入门指导
Nov 01 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 Javascript
修复bash漏洞的shell脚本分享
Dec 31 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
javascript拖拽应用实例(二)
Mar 25 Javascript
Node.js操作redis实现添加查询功能
May 25 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
bootstrap table插件动态加载表头
Jul 19 Javascript
十分钟教你上手ES2020新特性
Feb 12 Javascript
解决vant-UI库修改样式无效的问题
Nov 03 Javascript
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
tweenjs缓动算法的使用实例分析
Aug 26 #Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
Aug 26 #Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 #Javascript
小程序实现层叠卡片滑动效果
Aug 26 #Javascript
微信小程序 数据缓存实现方法详解
Aug 26 #Javascript
使用typescript构建Vue应用的实现
Aug 26 #Javascript
微信小程序实现手势滑动卡片效果
Aug 26 #Javascript
You might like
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
JavaScript 创建对象
2009/07/17 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
python连接池实现示例程序
2013/11/26 Python
Python中的闭包总结
2014/09/18 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
仓库班组长岗位职责
2013/12/12 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
提拔干部考察材料
2014/05/26 职场文书
英文邀请函
2015/02/02 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript