DevEco Studio:状态管理与事件处理

news/2024/11/29 21:07:51/文章来源:https://www.cnblogs.com/Thewang/p/18577544

DevEco Studio:状态管理与事件处理

引言

在现代前端开发中,状态管理和事件处理是构建交互式应用的核心。DevEco Studio,作为华为推出的开发环境,支持开发者使用TypeScript构建HarmonyOS应用。本文将通过三个示例代码,深入探讨如何在DevEco Studio中管理状态和处理事件。

第一节:状态变量与界面刷新

1.1 状态变量的重要性

在DevEco Studio中,状态变量(使用[@State](https://my.oschina.net/states) 装饰器修饰的变量)的变化会自动触发界面的刷新。这与普通变量不同,普通变量的变化不会引起界面的更新。

示例代码一
@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {Row() {Column() {Button('这是一个对话框').onClick(() => {console.log('log:', '对话框')AlertDialog.show({message: '这是一个对话框框'})})Text('这是一个文本').onClick(() => {console.log('log:', '文本')AlertDialog.show({message: '这是一个文本组件'})})}.width('100%')}.height('100%')}
}

运行结果

点击事件运行结果

1.2 普通变量与状态变量的区别

  • 普通变量:只能在初始化时渲染,后续变化了,也不会引起更新。
  • 状态变量:被装饰器修饰,值的改变会[自动]引起界面的刷新。
示例代码二
let myname: string = 'thewang'
@Entry
@Component
struct Index {myage: number = 19@State mymsg: string = 'hello thewang'build() {Column() {Text(myname).onClick(() => {myname = 'thetwo'console.log('myname', myname)})Text(this.myage.toString()).onClick(() => {this.myage = 18console.log('age', this.myage)})Text(this.mymsg).onClick(() => {this.mymsg = 'hello'})}}
}

运行结果

HarmonyOS Next点击事件2

第二节:事件处理与界面更新

2.1 事件处理基础

在DevEco Studio中,事件处理是通过.onClick()方法实现的,它允许我们在用户交互时执行特定的函数。

示例代码三

计数器案例

@Entry
@Component
struct Index {@State count: number = 1build() {Row() {Button('-').onClick(() => {this.count = this.count - 1})Text(this.count.toString()).margin(10)Button('+').onClick(() => {this.count = this.count + 1})}.padding(20)}
}

运行结果

HarmonyOS Next计数器案例

2.2 状态变量与界面更新

在上述代码中,count是一个状态变量。当按钮被点击时,count的值会改变,这会自动触发界面的更新,显示最新的计数。

2.3 界面布局与样式

  • Row 和 Column:用于创建行和列的布局。
  • Text 和 Button:用于显示文本和按钮。
  • margin 和 padding:用于设置组件的边距。

第三节:算术运算符的使用

3.1 基本算术运算符

在TypeScript中,基本的算术运算符包括加(+)、减(-)、乘(*)、除(/)和取余(%)。

示例代码
console.log('result', 1 + 1);
console.log('result', 2 - 1);
console.log('result', 2 * 3);
console.log('result', 6 / 3);
console.log('remainder', 7 % 2); // 3余1

3.2 赋值运算符

赋值运算符允许我们将一个值赋给变量,或者对变量进行计算后重新赋值。

示例代码
let num2: number = 77;
num2 %= 10; 
console.log('num2', num2);

运行结果

第四节:组件布局的构建

4.1 组件布局基础

在DevEco Studio中,我们可以使用ColumnRow组件来构建布局。

示例代码二
@Entry
@Component
struct Index {build() {Column() {// 外层Column,设置间距为8Column({space: 8 }) {// 用颜色填充代替图片,使用Stack组件Stack().width('100%').height(200) // 设置高度,根据实际情况调整.backgroundColor('gray') // 设置背景颜色,这里用灰色示例.borderRadius({topLeft: 6, topRight: 6 }) // 设置圆角// 标题文字Text('这是标题,颜色填充部分可以换成图片').fontSize(14).lineHeight(18).padding({left: 5, right: 5 })// 来源和点赞Row() {// 来源Row() {Stack().width(16).height(16) // 设置高度,根据实际情况调整.backgroundColor('blue') // 设置背景颜色,这里用蓝色示例.margin({right: 3 })Text('用户名称').fontSize(12).fontColor('#7e7e7e')}// 点赞Row() {Stack().width(14).height(14) // 设置高度,根据实际情况调整.backgroundColor('red') // 设置背景颜色,这里用红色示例.margin({right: 3 })Text('8888').fontSize(12).fontColor('#7e7e7e')}}.width('100%').justifyContent(FlexAlign.SpaceBetween).padding({left: 5, right: 5 })}.width('50%')}.padding(20)}
}

运行结果

结语

通过本文,我们学习了在DevEco Studio中管理状态和处理事件的基础知识。这些知识对于构建交互式应用至关重要。希望本文能够帮助你更好地理解和应用DevEco Studio进行开发。


注意:文章中提到的代码示例需要在DevEco Studio环境中运行,确保你已经配置好了相应的开发环境。如果你在运行示例时遇到任何问题,可以参考DevEco Studio的官方文档或寻求社区的帮助。

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

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

相关文章

河北公需课代 (可以补)

学时30个,需要联系15689397956

技术框架对MyBatis的入门学习

MyBatis快速入门 在回顾JDBC时,我们已经创建有Maven工程,而且在pom.xml中也已经导入 mysql 依赖包,这里就直接在原有工程上搭建MyBatis环境,以及使用MyBatis来实现JDBC查询user的操作流程。 MyBatis环境搭建 首先,在 Maven 项目的 pom.xml 中添加 MyBatis 的依赖 jar 包 &…

基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)for t=1:Iterstfor i=1:Numif xwoa(i,1)<0xwoa(i,1)=0.1; endif xwoa(i,2)<0xwoa(i,2)=0.001; end%目标函数更新[pa(i)] = f…

安装苹果系统台式电脑如何正确选购装机硬件

结合自己的一些装机经验和网上查阅的相关资料,给大家安利一波 “ 如何正确选配黑苹果硬件 ” 方面的相关知识。文中配置推介表中的配置都是目前在安装黑苹果上比较常见且稳定的机型,并且EFI引导文件都有现成的,在各大资源网站中也比较好找,能帮助你 快速简单的吃上黑苹果。…

JavaWeb知识点总结

JavaWeb知识点总结和学习笔记目录JavaWebjunit黑盒测试白盒测试注解所需jar包反射作用获取Class对象的方式class对象功能应用注解作用预定义的注解自定义注解解析注解动态代理ProxyMaven作用概述仓库maven依赖仓库:IDEA集成Maven高级功能JDBC概念本质快速入门各个对象抽取JDBC工…

电话号码的字母序列

题目描述 输入一个仅包含数字 2-9 的字符串,输出所有它能表示的字母序列。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入 输入一个包含数字 2-9 的字符串,长度不超过6。 输出 按字典序输出所有能表示的字母序列,每行输出一个。 输入样例 23输出…

IDEA-idea设置导航栏字体大小代码编辑区字体大小

一、设置导航栏字体大小 Setting - Appearance & Behavior - Appearance - Use custom font二、设置代码编辑区字体大小 Setting - Font - Size

Pycharm-Pycharm设置左侧导航栏字体大小和代码编辑区字体大小

一、左侧导航栏字体大小 Setting - Appearance & Behavior - Appearance - Use custom font - Size二、代码编辑区字体大小

DevEco Studio 实战第一节:字符串拼接与组件构建

DevEco Studio 实战第一节:字符串拼接与组件构建 引言 在现代软件开发中,TypeScript 提供了强类型的优势,而 DevEco Studio 作为华为推出的开发集成环境,提供了便捷的代码管理和版本控制功能。本文将通过一个简单的示例,介绍如何在 TypeScript 和 DevEco Studio 中进行字符…

WIN11任务栏右下角wifi、音量、电源三个模块无法弹窗

在平时使用win11电脑时候偶发WIN11任务栏右下角wifi、音量、电源三个模块无法弹窗的问题,一般重启后恢复正常,还有一种方法,打开任务管理器,找到Windows资源管理器选择重新启动,之后就恢复正常啦!代码成就万世基积沙镇海 梦想永在凌云意意气风发

【泛微E9】移动应用将页面按钮置灰

效果如下:实现方法: $load(function() {setTimeout(function() {var kpbm = $f("kpbm").val();var zcbm = $f("zcbm").val();const date = new Date();const year = date.getFullYear();const month = String(date.getMonth() + 1).padStart(2, 0); // 月…