【最新鸿蒙应用开发】——使用axios完成手机号注册业务

使用Axios请求实现目标效果图:

短信验证码登录

  1. 校验图形验证码,校验通过

  2. 发送短信验证码到用户手机上,可通过在线 WebSocket查看:wss://guardian-api.itheima.net/verifyCode

  3. 根据 手机号 + 短信验证码 实现登录

img

更新图形验证码

准备一个 @State,用于更新图形验证码

手机号+验证码登录

获取图形验证码

  // 校验图形验证码async onGraphicCodeSubmit() {try {// 1. 把手机号,图形验证码发送到后端,校验图形验证码(防机器)await postCodeGraphicCheckAPI({bizType: BizType.PhoneLogin, // 业务类型,1:手机号短信验证码登录phone: this.phoneNumber, // 手机号verifyCode: this.graphicCode // 图形验证码})// 2. 关闭半模态转场this.isShowSheet = false// 3. 清空输入框this.graphicCode = ''// 4. 调用发送短信接口this.onSendSmsCode()} catch (error) {// 刷新验证码this.timestamp = Date.now()}}
​// 半模态转场@BuilderSheetBuilder() {Column() {Text('图形验证码').fontSize(16).fontColor($r('app.color.font')).margin({ top: 20, bottom: 50 })
​Column({ space: 20 }) {Row({ space: 10 }) {TextInput({ placeholder: '图形验证码' }).fontSize(14).height(42).layoutWeight(1).maxLength(4).onChange((value) => {this.graphicCode = value}).onSubmit(() => {// 提交图形验证码this.onGraphicCodeSubmit()})Image(`${BASE_URL}/code/graphic?phone=${this.phoneNumber}&bizType=${BizType.PhoneLogin}&timestamp=${this.timestamp}`).width(108).height(42).objectFit(ImageFit.Contain).onClick(() => {this.timestamp = Date.now()})}
​Button("提交").height(42).backgroundColor($r('app.color.brand')).width('100%').enabled(this.graphicCode.length > 0).onClick(() => {// 提交图形验证码this.onGraphicCodeSubmit()})}}.padding({ left: 30, right: 30 }).width('100%').height('100%')}
​
​
.bindSheet($$this.isShowSheet, this.SheetBuilder(), {// 半模态转场,屏幕高度一半,无法修改关闭图标样式detents: [SheetSize.MEDIUM],backgroundColor: $r('app.color.white')
})

发送短信验证码

1、发送验证码

2、开始倒计时

3、验证码可以通过接口文档的 WebScoket 测试接口获取,模拟手机收到短信。

可通过 在线 WebSocket 工具,模拟查看验证码信息: 服务连接地址 wss://guardian-api.itheima.net/verifyCode

// 发送短信验证码async onSendSmsCode() {// 发送验证码await postCodeSmsSendAPI({bizType: BizType.PhoneLogin,phone: this.phoneNumber,})// 用户提醒promptAction.showToast({ message: '短信发送到手机上,请注意查收' })// 界面更新倒计时this.startCountDown()}// 开始倒计时startCountDown() {// 初始化倒计时秒数this.count = 120// 关闭旧的定时器clearInterval(this.intervalID)// 开启定时器this.intervalID = setInterval(() => {this.count--if (this.count <= 0) {clearInterval(this.intervalID)}}, 1000)}// 页面销毁,停止倒计时,释放资源aboutToDisappear() {clearInterval(this.intervalID)}

登录提交

1、登录成功持久化存储用户信息

2、axios 拦截器添加 token 信息

// 用户信息持久化@StorageLink(LOGIN_INFO) loginInfo: LoginInfoResponse = {}// 登录提交async onLoginSubmit() {const res = await postUserLoginVerifyCodeAPI({phone: this.phoneNumber,verifyCode: this.verifyCode})//promptAction.showToast({ message: '登录成功' })// 更新持久化存储的信息this.loginInfo = res.data.result// 返回上一页router.back()}

3、pages/Index.ets 初始化持久化存储

// 持久化存储PersistentStorage.persistProp<PrivacySettings>(PRIVACY_SETTINGS, {})PersistentStorage.pers

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日本指数实时API接口

日本 指数 实时API接口 # Restful API https://tsanghi.com/api/fin/index/JPN/realtime?token{token}&ticker{ticker}指定指数代码&#xff0c;获取该指数的实时行情&#xff08;开、高、低、收、量&#xff09;。 更新周期&#xff1a;实时。 请求方式&#xff1a;GET。…

CV每日论文--2024.6.4

1、Mixed Diffusion for 3D Indoor Scene Synthesis 中文 标题&#xff1a;用于 3D 室内场景合成的混合扩散 简介&#xff1a;这篇论文提出了一种名为MiDiffusion的混合离散-连续扩散模型,用于从给定的房间类型、平面图和可能存在的物体中合成逼真的3D室内场景。 作者指出,该…

【Unity实战篇 】 | Unity实现UGUI颜色渐变,支持透明渐变

前言 【Unity实战篇 】 | Unity实现UGUI颜色渐变&#xff0c;支持透明渐变一、双层颜色渐变1.1 组件属性面板1.2 效果及代码 二、多层颜色渐变2.1 组件属性面板2.2 效果及代码 总结 前言 在Unity中UGUI的实现图片和文字颜色渐变效果是一个很常见的需求。下面就来看一下颜色渐变…

机器学习中的集成学习

&#x1f4ac;内容概要 1 集成学习概述及主要研究领域 2 简单集成技术  2.1 投票法  2.2 平均法  2.3 加权平均 3 高级集成技术  3.1 Bagging  3.2 Boosting  3.3 Bagging vs Boosting 4 基于Bagging和Boosting的机器学习算法  4.1 sklearn中的Bagging算法  4.2 sklea…

1961. 检查字符串是否为数组前缀 - 力扣

1. 题目 给你一个字符串 s 和一个字符串数组 words &#xff0c;请你判断 s 是否为 words 的 前缀字符串 。 字符串 s 要成为 words 的 前缀字符串 &#xff0c;需要满足&#xff1a;s 可以由 words 中的前 k&#xff08;k 为 正数 &#xff09;个字符串按顺序相连得到&#xf…

大型语言模型的工作原理(LLM:从零学起)

目录 一、说明 二、LLM如何运作 三、预训练&#xff1a;基本模型 四、微调&#xff1a;培训助手 五、RLHF&#xff1a;从人类反馈中强化学习 六、提示工程 七、总结 一、说明 这是我们谈论LLM系列的第二篇文章。在本文中&#xff0c;我们旨在为大型语言模型 &#xff08;LLM&am…

企业微信hook接口协议,ipad协议http,chatid转群id

chatid转群id 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","chatid":"wrO9o4EAAAeR_nSlmjeX1RWrKAKxN8jQ" } 返回示例 {&…

【银河麒麟V10服务器OS-系统根分区扩容】指导教程手册

【银河麒麟V10服务器OS-系统根分区扩容】指导教程手册 环境信息&#xff1a;VMware虚拟软件16.0 首先查看KylinOS服务器版本&#xff1a;nkvers 备注&#xff1a; (Tercel) 版本是 V10 SP1 版本&#xff0c; (Sword) 版本是 V10 SP2 版本&#xff0c; (Lance) 版本是 V10 …

UE4 使用样条线做鱼儿封闭路径动画

描述&#xff1a;鱼儿的游动动画的特点 1.通常是始终保持Y (Pitch)轴角度不变 2.调头的时候改变的是Z轴角度 效果&#xff1a;调头的时候比较自然 蓝图&#xff1a; 最后为了让鱼儿有恒定的游动速度&#xff0c;增加以下蓝图节点&#xff0c;游动速度为50

CTFHUB-技能树-web-web前置技能-HTTP协议全

目录 1.请求方式 2.302跳转 3.Cookie 4.基础认证 5.响应包源码 1.请求方式 curl -v -X http://challenge-3022c877a8dcedeb.sandbox.ctfhub.com:10800/index.php 2.302跳转 参考链接&#xff1a;http://t.csdnimg.cn/aqdNG 301——永久性重定向。该状态码表示请求的资源已…

Avue-data数据大屏显示柱状图(附Demo讲解)

目录 前言1. 接口方式2. SQL查询 前言 由于网上对这部分的知识点相对较少&#xff0c;研究半天的框架最终输出结果 此文主要以记录总结的方式展示如何使用数据库以及接口方式 需要明白柱状图的返回数据格式&#xff1a; #柱状图数据格式 {"categories": ["苹…

组织是什么,为什么需要组织,为什么需要公司

垂直组织 组织架构设计&#xff0c;曾经咱们多个章节进行沟通&#xff0c;今天再回到组织本身。不妨可以思考一个这样的问题&#xff0c;或者随访身边的老板或者朋友&#xff0c;让他们绘制一个组织架构图&#xff0c;或者绘制一个本组织一个视图&#xff0c;得到以下图的示意…

[Redis]Set类型

集合类型也是保存多个字符串类型的元素的&#xff0c;但和列表类型不同的是&#xff0c;集合中 1&#xff09;元素之间是无序的 2&#xff09;元素不允许重复 一个集合中最多可以存储2^32-1个元素。 Redis 除了支持集合内的增删查改操作&#xff0c;同时还支持多个集合取交…

盲盒小程序库存管理的关键策略

随着盲盒经济的兴起&#xff0c;越来越多的商家开始投入盲盒小程序的开发与运营。然而&#xff0c;在享受市场红利的同时&#xff0c;库存管理的问题也随之而来。合理的库存管理不仅能够满足用户需求&#xff0c;还能有效优化库存周转率&#xff0c;提升商家的盈利能力。本文将…

有光摄影分享网站系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;足球资讯管理&#xff0c;球队管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;活动&#xff0c;论坛…

HCIA--OSPF实验(复习)

实验拓扑&#xff1a; 实验思路&#xff1a; 1.规划IP&#xff0c;配置环回&#xff0c;接口IP 2.把R1&#xff0c;R2优先级改为0&#xff0c;让R1、R2放弃选举&#xff0c; [r1]interface g0/0/0 [r1-GigabitEthernet0/0/0]ospf dr-priority 0 <r1>reset ospf…

数据结构——哈希表、哈希桶

哈希概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较&#xff0c;顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(logN),搜索的效率取决于搜索过程种元素的比较次…

ElasticSearch学习笔记之一:介绍及EFK部署

1. 系统概述 The Elastic Stack&#xff0c;包括Elasticsearch、Kibana、Beats和Logstash&#xff08;也成为ELK Stack&#xff09; Elasticsearch&#xff1a;简称ES&#xff0c;是一个开源的高扩展的分布式全文搜索引擎&#xff0c;是整个Elastic Stack技术栈的核心。它可以…

docker安装redis以及持久化

为了避免当虚拟机关机后redis数据丢失的情况&#xff0c;redis需要持久化。所以要挂载数据卷 创建数据和配置存放的目录 [root192 data]# pwd /root/data [root192 data]# mkdir -p /root/data/redis/conf && chmod 777 /root/data/redis/conf [root192 data]# mkdir …

怎么找抖音视频素材?下载抖音的素材视频网站分享给你

在这个视觉印象至关重要的时代&#xff0c;选用高质量的视频素材对于制作抖音视频来说是关键。如果你正在寻找适合的视频素材来丰富你的抖音创作&#xff0c;以下这份详细的视频素材网站指南将帮助你迈出第一步。 蛙学府网 蛙学府网提供了丰富多样的视频素材&#xff0c;包括动…