HarmonyOS Button倒计时获取验证码的实现

HarmonyOS
2024-12-26 13:44:14
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
aquaa

参考代码:

@Entry
@Component
struct Page33 {
  // 验证码按钮显示信息状态
  @State captchaButtonText: string = '获取验证码';
  // 滑块验证显示/隐藏状态
  @State sliderVisibility: Visibility = Visibility.None;

  // 页面即将消失时的回调函数
  aboutToDisappear() {
    // 清除验证码倒计时定时器
    clearInterval(globalThis.captchaTimerId);
  }

  // 构建组件树
  build() {
    // 主要布局
    Column() {
      // 验证码按钮
      Button((this.captchaButtonText))
        .fontSize('32lpx')
        .fontColor('#FF1919')
        .width('50%')
        .onClick(() => {
          // 判断是否开始倒计时
          if (this.captchaButtonText === '获取验证码') {
            // 设置初始倒计时时间为60秒
            globalThis.remainingSeconds = 60;
            // 更新验证码按钮文本为剩余秒数
            this.captchaButtonText = globalThis.remainingSeconds + 's';

            // 清除已存在的定时器
            clearInterval(globalThis.captchaTimerId);

            // 创建新的倒计时定时器
            globalThis.captchaTimerId = setInterval(() => {
              console.log('==== 定时器执行:', this.captchaButtonText);
              // 减少一秒
              globalThis.remainingSeconds--;
              // 更新验证码按钮文本
              this.captchaButtonText = globalThis.remainingSeconds + 's';

              // 倒计时结束,恢复初始状态
              if (globalThis.remainingSeconds <= 0) {
                this.captchaButtonText = '获取验证码';
                // 清除定时器
                clearInterval(globalThis.captchaTimerId);
              }
            }, 1000);
          }
        });
    }
    .width('100%');
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
分享
微博
QQ
微信
回复
2024-12-26 16:49:56
相关问题
HarmonyOS 页面倒计时怎么实现
715浏览 • 1回复 待解决
HarmonyOS 实现倒计时功能
998浏览 • 1回复 待解决
HarmonyOS 倒计时天数
1286浏览 • 1回复 待解决
HarmonyOS 倒计时方法
1093浏览 • 1回复 待解决
HarmonyOS TextTimer倒计时问题
924浏览 • 1回复 待解决
如何实现文本类型倒计时
1554浏览 • 0回复 待解决
HarmonyOS 如何自动倒计时组件
1115浏览 • 1回复 待解决
HarmonyOS 60秒倒计时demo
834浏览 • 1回复 待解决
HarmonyOS 请问ArkTS如何实现倒计时功能?
34265浏览 • 8回复 待解决
如何实现一个倒计时器?
1332浏览 • 1回复 待解决
HarmonyOS 申请验证码demo实现
830浏览 • 1回复 待解决
实现验证码登录之前滑动验证实现
804浏览 • 1回复 待解决
HarmonyOS 如何实现滑动验证码功能
1305浏览 • 1回复 待解决
HarmonyOS Timer倒计时自定义
1272浏览 • 1回复 待解决
前端验证码配合后端实现思路?
4153浏览 • 1回复 待解决
HarmonyOS 验证码输入样式
811浏览 • 1回复 待解决
HarmonyOS TextTimer60秒倒计时显示成00
930浏览 • 1回复 待解决