HarmonyOS/OpenHarmony应用开发-ArkTS语言声明式UI描述

本文详细介绍了如何使用ArkTS语言在HarmonyOS上进行声明式UI设计,包括无参数和有参数组件创建、配置属性、事件处理以及子组件的添加,通过实例展示了各种操作方法。

ArkTS以声明方式组合和扩展组件来描述应用程序的UI,同时还提供了基本的属性、事件和子组件配置方法,帮助开发者实现应用交互逻辑。

一、创建组件

根据组件构造方法的不同,创建组件包含有参数和无参数两种方式。

说明,创建组件时不需要new运算符。

1.无参数

如果组件的接口定义没有包含必选构造参数,则组件后面的“()”不需要配置任何内容。例如,Divider组件不包含构造参数:

.Column() {

.  Text('item 1')

.  Divider()

.  Text('item 2')

.}

2.有参数

如果组件的接口定义包含构造参数,则在组件后面的“()”配置相应参数。

Image组件的必选参数src。

.Image('https://xyz/test.jpg')

Text组件的非必选参数content。

.// string类型的参数

.Text('test')

.// $r形式引入应用资源,可应用于多语言场景

.Text($r('app.string.title_value'))

.// 无参数形式

.Text()

变量或表达式也可以用于参数赋值,其中表达式返回的结果类型必须满足参数类型要求。

例如,设置变量或表达式来构造Image和Text组件的参数。

.Image(this.imagePath)

.Image('https://' + this.imageUrl)

.T

在使用ArkTS(一款基于TypeScript的语法糖,用于增强JavaScript开发体验的工具)和HarmonyOS(鸿蒙系统)开发过程中,我们可以创建一个带`@Builder`装饰器的函数来动态改变字体大小。首先,假设我们有一个名为`TextComponent`的组件,它有`fontSize`属性,并且我们已经安装了`@antv/x-component`库来支持UI构建。 ```typescript import { Component } from '@antv/x-component'; import { build as buildWithAntv } from '@antv/x-component/lib/builder'; // 创建一个带有 @Builder 装饰器的 TextComponent 类 class TextComponent extends Component { static displayName = 'TextComponent'; @buildWithAntv({ alias: 'text', // 元素名称 properties: { fontSize: { type: Number, default: 30 }, // 字体大小,默认值为30 }, }) setFontSize(fontSize: number) { this.set('fontSize', fontSize); } } // 页面中使用这个组件并调用setFontSize三次 const myText1 = new TextComponent({ text: '文本1' }); myText1.setFontSize(50); // 第一次点击按钮后的操作 const myText2 = new TextComponent({ text: '文本2' }); myText2.setFontSize(50); // 第二次点击按钮后的操作 const myText3 = new TextComponent({ text: '文本3' }); myText3.setFontSize(50); // 第三次点击按钮后的操作 // 将这些组件添加到页面上 document.body.appendChild(myText1.render()); document.body.appendChild(myText2.render()); document.body.appendChild(myText3.render()); // 模拟点击按钮事件 function handleClick() { const buttons = document.querySelectorAll('.change-font-size'); buttons.forEach(button => button.addEventListener('click', () => { buttons.forEach(b => b.textContent = (b.textContent === '30' ? '50' : '30')); })); } handleClick(); // 初始化显示为30,点击后切换 ``` 在这个例子中,`@Builder`装饰器帮助我们在构造函数之外设置属性值。然后,通过在页面上实例化三个`TextComponent`并分别调用`setFontSize`方法,实现了字体大小的动态更改。当点击模拟的按钮时,按钮的文字会切换,表明字体大小发生了变化。 请注意,这只是一个简化的示例,实际项目中可能需要处理更多细节,如事件监听、状态管理等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值