计时器60s

计时器是经常用到的功能,下面以react nativ的例子简介来写一个倒计时60s的小demo。

代码如下:

import React, { Component } from ‘react‘;
import {
    Text,
    View,
    TouchableOpacity
} from ‘react-native‘;
import {
    Button,
    Content,
    Container,
    Header,
    InputGroup,
    Input,
    List,
    ListItem,
    Thumbnail,
    Title,
} from ‘native-base‘;

import MyTheme from ‘../../themes/myTheme‘;
import SetNewPasswordView from ‘./../login-register/set-newPassword-view‘

export default class FindPasswordView extends Component {
    constructor(props) {
        super(props);
        this.state = {
            data: 60,
            sendButton: true
        };
        this._index = 60;
        this._timer = null;
    }

    countTime() {
        this.setState({sendButton: false});

        this._timer = setInterval(()=> {
            this.setState({data: this._index--});
            if (this.state.data <= 0) {
                this._timer && clearInterval(this._timer);
                this.setState({sendButton: true});
            }
        }, 1000);
    }

    componentWillUnmount() {
        this._timer && clearInterval(this._timer);
    }

    _navigate(name, component, role, type = ‘Normal‘) {
        this.props.navigator.push({
            component: component,
            name: name,
            passProps: {
                name: name,
                role: role
            },
            onPress: this._onPress,
            rightText: ‘右边‘,
            type: type
        })
    }

    render() {
        return (
            <Container theme={MyTheme}>
                <Header>
                    <Button transparent onPress={()=>this.props.navigator.pop()}>
                        <Text style={{color:‘#35b873‘}}>取消</Text>
                    </Button>
                    <Title>找回密码</Title>
                </Header>
                <Content style={{backgroundColor:‘#eff2f3‘}}>
                    <View
                        style={{flex:1,flexDirection:‘row‘,backgroundColor:‘#fff‘,marginTop:20,borderBottomWidth:0.5,borderColor:‘#ccc‘}}>
                        <Text style={{marginTop:13,marginLeft:15}}>手机号</Text>
                        <Input style={{marginLeft:20}} placeholderTextColor={‘#ccc‘} placeholder="请输入手机号..."/>
                    </View>
                    <ListItem
                        style={{backgroundColor:‘#fff‘,paddingLeft:0,marginLeft:0,marginTop:20,borderBottomWidth:0}}>
                        <InputGroup>
                            <Input style={{marginLeft:5,marginRight:10}} placeholderTextColor={‘#ccc‘}
                                   placeholder="请输入验证码..."/>
                            {
                                this.state.sendButton ? <Button style={{marginLeft:5,marginRight:10}} small success
                                                                onPress={this.countTime.bind(this)}>发送验证码</Button> :
                                    <Button disabled style={{marginLeft:5,marginRight:10}}
                                            small>请等待{this.state.data}s</Button>
                            }

                        </InputGroup>
                    </ListItem>
                    <Button block success onPress={()=>this._navigate(‘找回密码‘,SetNewPasswordView)}
                            style={{marginLeft:15,marginRight:15,marginTop:40,padding:15,height:45}}>
                        验证
                    </Button>
                </Content>
            </Container>
        )
    }
}

  

时间: 2024-10-20 08:09:53

计时器60s的相关文章

Cisco学习笔记 CCNP-RIP

RIP路由信息协议 version1   有类  16跳  广播更新  255.255.255.0  周期性更新 30s  不支持MD5  距离矢量协议  UDP 520  管理距离 120 version2   无类   16跳   组播更新  224.0.0.9      周期性更新 30s  支持MD5  距离矢量协议  UDP 520  管理距离 120 直连路由的条件有2个,接口开启,配了ip地址.-------直连路由形成的条件 路由表学完称为收敛过程. RIP防环机制:1.最大跳数

CCNP笔记第一天

RIP(routinginformation protocol) V1和V2的共同点: 1.采用贝尔曼-福特算法 2.典型的距离矢量型路由协议 3.采用周期性更新 30s更新一次 4.AD120 5.基于UDP520 6.跳数作为唯一的度量值,最大16跳,然后将会为possible down 7.相同的放环机制 a.最大跳数--16 b.水平分割----从一个接口发送出去的路由条目,将不会从这个接口接收 帧中继的主接口水平分割默认是关闭的,其他接口默认是开启的 c.毒性逆转---从一个接口学习到

[FPGA]Verilog 60s秒表计时器(最大可计时间长达9min)

[FPGA]Verilog 60s秒表计时器 1.引述 这次的实验来自于本人本科课程数电结课时的自选题目.由于这次上传是后知后觉,学校已将小脚丫板子回收,所以在这篇文章中没法贴出代码结果的效果图了,但最终效果已经过测试,可放心食用.那么下面就贴上代码并略加讲解供大家参考. 2.分频模块 我们要实现一个秒表,自然要将实验板中的时钟脉冲clk分频为一个周期为1s的脉冲,已知小脚丫板子的晶振为12MHz.下面贴上分频模块的代码. module divide # ( //parameter是verilo

简易计时器

这个简易计时器,实现了简单的计时,点击开始按钮开始计时,点击停止按钮就停止,屏幕现实开始到停止的时间差.在run()方法里已换算成时分秒. 代码仅供参考: strings.xml <string name="app_name">计时器</string> <string name="text_time">00:00</string> <string name="button_start">

【咸鱼教程】基于系统时间的计时器DateTimer(不受FPS影响)

教程目录一 计时器简介二 计时器实现三 Demo下载 一 计时器简介在手机上跑游戏时,可能由于运动物体过多,导致帧频太低,计时不准确.比如一些倒计时的游戏,可能倒计时30s,变成了35s.比如iphone运行流畅游戏倒计时60s,实际耗时60s,而android有点儿慢,倒计时60s,实际耗时70s.比如一些物体运动,每帧移动1像素,60fps,移动60像素,由于卡顿,帧频降低到40fps,那么实际这个物体只移动了40像素.比如在unity中,有两种帧环FixedUpdate跟Update,Up

计时器开始和关闭

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>计时器</title></head><script type="text/javascript"> var num=0; var i; function

【效率】专为Win7系统设计的极简番茄计时器 - MiniPomodoro (附源码)

时光飞逝,一转眼坚持使用番茄工作法已经快3年了!能坚持这么长时间,主要还是得益于它的简单.但是令人纠结的是,这么长时间以来,换了7款不同的番茄计时器,仍然没有找到非常满意的: ■ 机械的噪音太大,会妨碍身边的同事,只能家里用.但是家里又太安静了,一旦响铃就跟晴天霹雳似的,把自己吓一跳. ■ 手机上的计时器 app 种类繁多,有偏重视觉效果的,有偏重任务管理的,有主打简单易用的,但是它们都有一个共同的缺点:不能保持屏幕常亮(太费电),时常会把它给忘了.另外怕影响同事一般都会把铃声关掉,只靠震动的话

iOS:三种常见计时器(NSTimer、CADisplayLink、dispatch_source_t)的使用

一.介绍 在iOS中,计时器是比较常用的,用于统计累加数据或者倒计时等,例如手机号获取验证码.计时器大概有那么三种,分别是:NSTimer.CADisplayLink.dispatch_source_t 二.使用 @property (strong,nonatomic)NSTimer *timer; @property (strong,nonatomic)CADisplayLink *displaylinkTimer; @property (strong,nonatomic)dispatch_s

让可等待的计时器添加APC调用

1 // TimerAPCRoutine.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <windows.h> 6 #include <iostream> 7 #include <time.h> 8 9 10 using namespace std; 11 12 13 void GetSystemTime(); 14 VOID CALLBACK TimerAPCRoutinu