【HarmonyOS 5.0】从0到1开发购物应用App(二):登录页对接口

embedded/2025/1/8 6:53:00/

【HarmonyOS Arkts笔记】http网络请求封装
【HarmonyOS Arkts笔记】@ohos.data.preferences用户首选项实现存储信息

登录页

点击登录按钮调用login()方法

import { promptAction, router } from '@kit.ArkUI';
import loginApi from "../../api/login"
import PreferenceUtil from '../../utils/preferencesUtils';@Entry
@Component
struct Login {@State account: string = '';@State password: string = '';@State loading: boolean = false;@State isCheck: boolean = false;login() {if (this.account == '') {promptAction.showToast({message: '请输入账号'})return}if (this.password == '') {promptAction.showToast({message: '请输入密码'})return}if (!this.isCheck) {promptAction.showToast({message: '请同意协议'})return}interface DataFace {token: string}interface ResFace {code: number,data: DataFace,msg: string}/*调用接口*/this.loading = trueloginApi.login({account: this.account,password: this.password,client: 6}).then((res: ResFace) => {if (res.code == 1) {let token: string = res.data.token/*存储用户token*/PreferenceUtil.putPreference('token', token)promptAction.showToast({message: '登录成功'})setTimeout(() => {router.pushUrl({url: 'pages/Index'})}, 2000)}this.loading = false;})}build() {Column() {Image($r('app.media.logo')).width(80).height(80).borderRadius(10).margin({ top: 50 })Text('登录').margin({ top: 15 })Text('登录账号以使用更多服务').fontSize(12).margin({ top: 5 })TextInput({ text: this.account, placeholder: '请输入账号' }).margin({ top: 20 }).onChange((val) => {this.account = val})TextInput({ text: this.password, placeholder: '请输入密码' }).type(InputType.Password).margin({ top: 10 }).onChange((val) => {this.password = val})Row() {Text('忘记密码').fontSize(12).fontColor($r('app.color.color_info'))Text('注册账号').fontSize(12).fontColor($r('app.color.color_primary'))}.justifyContent(FlexAlign.SpaceBetween).margin({ top: 10 }).width('100%')Button() {if (this.loading) {Row() {LoadingProgress().width(30).height(30).margin({ left: 12 }).color(0xFFFFFF)Text('登录中~').fontColor('#fff')}} else {Text('登录').fontColor('#fff')}}.width('100%').height(30).margin({ top: 100 }).backgroundColor($r('app.color.color_primary')).onClick(() => {this.login()})Row() {/*是否同意协议*/if (this.isCheck) {Image($r('app.media.ic_public_todo_filled')).width(15).height(15).onClick(() => {this.isCheck = !this.isCheck})} else {Image($r('app.media.ic_screenshot_circle')).width(15).height(15).onClick(() => {this.isCheck = !this.isCheck})}Text('我已阅读并同意').fontColor($r('app.color.color_info')).fontSize(12).margin({ left: 5 })Text('《用户协议》').fontColor($r('app.color.color_primary')).fontSize(12)Text('和').fontColor($r('app.color.color_info')).fontSize(12)Text('《隐私政策》').fontColor($r('app.color.color_primary')).fontSize(12)}.margin({ top: 20 })}.justifyContent(FlexAlign.Center).width('100%').padding({ left: 30, right: 30 })}
}

http://www.ppmy.cn/embedded/151927.html

相关文章

链表OJ题(一)

(一)轮转数组 . - 力扣(LeetCode) 题目描述:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例一: 方法一:暴力求解 先用一个变量存储数组中的最后…

NoSQL——期末复习(5)第五章Neo4J重点思考题

什么是Neo4j?并对其数据模型进行详细描述。 Neo4j是一个基于Java语言的开源图数据库系统。Neo4j具有强大的图处理和查询搜索能力,通过专用的Cypher语言完成各类操作。 Neor4j采用将数据存储为节点和边的图存储模式,其中节点表示实体、边表示…

78、使用爱芯派2_AX630C开发板 3.2T高有效算力 低功耗 支持AI-ISP真黑光实验

基本思想:使用爱心元智最新的版本开发板进行实验 AX630C、AX620Q 都是 620E 这一代 一、参考这个官方教程,先把代码在本地交叉编译完成 https://github.com/AXERA-TECH/ax620e_bsp_sdk 然后在拷贝到620c设备上 root@ax630c:~/ax620e_bsp_sdk/msp/out/arm64_glibc/bin# ./…

Django Admin 以管理 AWS Lambda 函数

在现代云计算环境中,AWS Lambda 函数已成为构建无服务器应用程序的重要组成部分。作为开发者或运维工程师,有效管理这些 Lambda 函数是一项关键任务。今天,我们将探讨如何利用 Django Admin 创建一个强大而直观的界面来管理 AWS Lambda 函数。 背景 假设我们已经创建了一个…

linux内核下载流程

一、背景 用于需要去阅读linux的内核源码,以及找到指定版本的内核代码,今天专门做了这个事,目的是让后来者看着步骤直接操作就行。 如果不想看步骤可以直接在这个网址下载内核源码: https://www.kernel.org/pub/linux/kernel/v3.…

osg运行时关于gl.h错误的问题解决

osg测试的时候,运行生成的代码,出现了如下的一堆错误问题: 14:09:17:921 生成开始于 14:09... 14:09:18:208 1>------ 已启动生成: 项目: Project3, 配置: Debug x64 ------ 14:09:18:596 1>osgt1.cpp 14:09:18:932 1>C…

一个简单的调用函数的判断素数Matlab代码

num 29; % 输入要检查的数字 if isPrime(num)fprintf(%d 是一个素数。\n, num); elsefprintf(%d 不是一个素数。\n, num); end判断素数的函数 isPrime function result isPrime(n)if n < 1result false; % 1及以下不是素数elseif n 2result true; % 2 是素数elser…

kafka使用常见问题

连接不上kafka,报下边的错 org.apache.kafka.common.KafkaException: Producer is closed forcefully.at org.apache.kafka.clients.producer.internals.RecordAccumulator.abortBatches(RecordAccumulator.java:760) [kafka-clients-3.0.2.jar:na]at org.apache.kafka.client…