Taro Hooks 实现手机短信验证码_实现 发送验证码hooks-程序员宅基地

技术标签: 笔记  typescript  javascript  开发语言  

Taro Hooks 实现手机短信验证码

const [safePhoneInfo, setSafePhoneInfo] = useState({})
const [originalData, setOriginalData] = useState({})
const [countDownInfo, setCountDownInfo] = useState({
    icode: '',
    code_ts: '获取验证码',
    show_btn: true,
    toast: false,
    count: 60,
    uniqueId: '',
})
  const getCode = () => {
      if (
          safePhoneInfo.phone === '' ||
          !/^1[3456789]\d{9}$/.test(safePhoneInfo.phone)
      ) {
          // 这里验证一下号码格式是否正确,为空或者不正常都提示一下,然后激活提示控件true,其他的框架提示控件同理
          Taro.showToast({
              title: '请输入正确手机号',
              icon: 'none',
              duration: 1000,
              mask: true, // 防止触摸穿透
          })
      } else {
          let count = countDownInfo.count
          //发起短信接口
          Request({
              url: '/v2/code',
              method: 'POST',
              data: {
                  type: '1',
                  target: safePhoneInfo.phone,
              },
          }).then((res) => {
              const { resultCode, data } = res
              if (+resultCode === 0) {
                  setSafePhoneInfo({ ...safePhoneInfo, uniqueId: data })
              }
          })
          // 这里写一个定时器就可以去更新灰色按钮的内容而且show_btn是false时会出现灰色按钮,当倒计时结束又变成可以触发的按钮
          timer = setInterval(() => {
              setCountDownInfo((pre) => {
                  if (pre.count === 1) {
                      clearInterval(timer)
                      pre.count = 60
                      pre.show_btn = true
                      pre.code_ts = '获取验证码'
                  } else {
                      pre.count = count--
                      pre.show_btn = false
                      pre.code_ts = count + 's'
                  }
                  return pre
              })
          }, 1000)
      }
  }
  const formChange = (key, value) => {
      safePhoneInfo[key] = value
      setSafePhoneInfo({ ...safePhoneInfo })
  }
return (
    <View className="">
        {originalData.phone && (
            <AtForm className="form">
                <AtListItem
                    className="form-required"
                    title="原手机号"
                    extraText={originalData.phone}
                    arrow=""
                    />
            </AtForm>
        )}
        <AtForm className="form">
            <AtInput
                // required
                type="text"
                placeholder="请填写身份证号"
                value={safePhoneInfo.cardCode}
                onChange={(e) => {
                    formChange('cardCode', e)
                }}
                />
            <AtInput
                // required
                type="text"
                placeholder="请填写手机"
                value={safePhoneInfo.phone}
                onChange={(e) => {
                    formChange('phone', e)
                }}
                />
            <AtInput
                // required
                // title=" 短信验证码"
                type="number"
                placeholder="请填写短信验证码"
                value={safePhoneInfo.mobileCode}
                onChange={(e) => {
                    formChange('mobileCode', e)
                }}
                >
                {countDownInfo.show_btn ? (
                    <AtButton
                        className="get-code"
                        size="small"
                        type="secondary"
                        onClick={() => getCode()}
                        >
                        获取验证码
                    </AtButton>
                ) : (
                    <View className="count-zero">
                        {countDownInfo.code_ts}
                    </View>
                )}
            </AtInput>
        </AtForm>
    </View>
)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Tanjc518/article/details/121937707

智能推荐

【模拟电路】PCB的设计与生产-程序员宅基地

文章浏览阅读1.1k次,点赞29次,收藏23次。PCB就是印刷电路板PCB是一种非常重要的电子零件,它像电子设备的底板一样,可以帮助各种电子元件连接在一起。就像我们在做搭积木一样,需要一个底板来支撑和连接各种积木一样,PCB就是电子设备中的底板,支撑和连接各种电子元件。现在我们的手机、电脑、电视任意的电子设备里面都必须有PCB。PCB是Printed Circuit Board的缩写,中文名称为印刷电路板,是一种用于电子设备中的基础组件。

计算机毕设 - 手写数字识别系统的设计实现(源码+论文)_本科计算机毕设论文csdn-程序员宅基地

文章浏览阅读87次。字符识别是利用计算机自动辨识印刷在纸上或人写在纸上的汉字,是模式识别的一个重要分支,也是文字识别领域较为困难的问题之一。本项目旨在论述并设计实现一个自由手写体数字识别系统。_本科计算机毕设论文csdn

Matlab的复共轭转置_matlab 中是矩阵的复共轭-程序员宅基地

文章浏览阅读1.8k次。首先需要明确的一点是,复共轭是量子力学中的概念,不同于共轭,但是在量子力学的线性代数描述中,复数的复共轭与共轭在复数运算内是相等的。矩阵的此类运算可以类比。在matlab中,令 A为m*n的复矩阵,对其进行转置,采用,A点逗号(A.')对其进行复共轭转置,采用A逗号即可(A')下面是一些例子a = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i>> a'ans = 1.0000 - 1.0_matlab 中是矩阵的复共轭

facebook广告投放技巧-程序员宅基地

文章浏览阅读681次,点赞18次,收藏7次。总之,Facebook广告投放需要注重策略和技巧,不断优化和调整,才能达到预期的广告效果。

【数值计算方法(黄明游)】常微分方程初值问题的数值积分法:欧拉方法(向后Euler)【理论到程序】_数值计算 欧拉法-程序员宅基地

文章浏览阅读1.5k次,点赞27次,收藏17次。本文介绍了常微分方程初值问题的数值积分法之向后Euler方法,包括基本理论及python实现等_数值计算 欧拉法

forward和redirect路径问题_forward: 加路径-程序员宅基地

文章浏览阅读3.2k次。3.4.1. 绝对路径与相对路径如果咱们使用的URL网址是以“/”开头的,那么这个网址就叫做绝对路径。如果咱们使用的URL网址不是“/”开头的,那么这个网址就叫做相对路径。3.4.1.1. 相对路径在相对路径上,两者的表现是相同的。看看lingo-sample/03-03/这个例子,如果我们去请求relative/forwar_forward: 加路径

随便推点

cron -f有什么用-程序员宅基地

文章浏览阅读287次,点赞3次,收藏6次。命令用于在前台运行 Cron 守护进程,主要用于调试、排错、容器化环境下的运行以及与其他工具的集成。但是在生产环境中,还是建议将 Cron 作为后台服务运行,并配合适当的日志记录和监视措施。因此,在生产环境中,通常还是建议将 Cron 作为后台服务运行,并使用适当的日志记录和监视机制来跟踪其运行情况。通常情况下,Cron 作为一个后台服务运行,并根据定义的任务计划自动执行任务。命令时,Cron 会在前台运行,并将其输出和错误信息直接显示在终端或命令行界面上。

creator打包微信小游戏笔记_creator微信小游戏出包脚本-程序员宅基地

文章浏览阅读762次。AB包ab包通过一个文件夹生成,这个文件夹里包含了所有的图片资源,声音,脚本文件等,那么最后生成一个AB包的时候,最终的产物一个import文件夹,一个naitive文件夹,一个config.md5.json如果包含脚本的话,会单独生成一个index.js文件,将所有脚本文件合并注意:1:Creator 有 4 个 内置AB包,包括 resources、internal、main、start-scene,在设置 Bundle 名称 时请不要使用这四个名称2:小游戏分包只能放在本地,不能配置为远程包_creator微信小游戏出包脚本

DataList使用AspNetPager分页-程序员宅基地

文章浏览阅读90次。protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){stringstrSql;if(Request.QueryString.Count==0){..._datalist用不了aspnetpager

java: java.lang.ExceptionInInitializerErrorcom.sun.tools.javac.code.TypeTags 报错_java: java.lang.exceptionininitializererror com.su-程序员宅基地

文章浏览阅读3.2k次。java: java.lang.ExceptionInInitializerErrorcom.sun.tools.javac.code.TypeTags_java: java.lang.exceptionininitializererror com.sun.tools.javac.code.typetag

python增加管理员权限_ctypes.windll.shell32.isuseranadmin()-程序员宅基地

文章浏览阅读1.8k次。python增加管理员权限_ctypes.windll.shell32.isuseranadmin()

分布式配置中心——携程Apollo(阿波罗)的实现_携程 apollo-程序员宅基地

文章浏览阅读2.6k次。 分布式配置中心有很多,springcloud的config、百度的disconfig、携程的apollo、淘宝的diamond。由于携程的apollo极少的侵入性,以及面对springcloud开发,所以项目技术选型最终定为apollo。 一、携程apollo优点: ①支持配置热更新,而且不需要想springcloud那样需要消息总线来回调通知。 ②对于接入项目,只需..._携程 apollo

推荐文章

热门文章

相关标签