首页 > 其他分享 >UI范式:声明式UI描述

UI范式:声明式UI描述

时间:2024-10-17 16:36:40浏览次数:1  
标签:范式 Text Image 配置 参数 组件 UI 100 声明

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(MaoistLearning)
➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen
➤原文地址:https://www.cnblogs.com/strengthen/p/18472574
➤如果链接不是为敢技术的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

 

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

 

创建组件

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

说明

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

 

无参数

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

   
  1. Column() {
  2. Text('item 1')
  3. Divider()
  4. Text('item 2')
  5. }

 

有参数

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

  • Image组件的必选参数src。

       
    1. Image('https://xyz/test.jpg')
  • Text组件的非必选参数content。

       
    1. // string类型的参数
    2. Text('test')
    3. // $r形式引入应用资源,可应用于多语言场景
    4. Text($r('app.string.title_value'))
    5. // 无参数形式
    6. Text()
  • 变量或表达式也可以用于参数赋值,其中表达式返回的结果类型必须满足参数类型要求。

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

       
    1. Image(this.imagePath)
    2. Image('https://' + this.imageUrl)
    3. Text(`count: ${this.count}`)

 

配置属性

属性方法以“.”链式调用的方式配置系统组件的样式和其他属性,建议每个属性方法单独写一行。

  • 配置Text组件的字体大小。

       
    1. Text('test')
    2. .fontSize(12)
  • 配置组件的多个属性。

       
    1. Image('test.jpg')
    2. .alt('error.jpg')
    3. .width(100)
    4. .height(100)
  • 除了直接传递常量参数外,还可以传递变量或表达式。

       
    1. Text('hello')
    2. .fontSize(this.size)
    3. Image('test.jpg')
    4. .width(this.count % 2 === 0 ? 100 : 200)
    5. .height(this.offset + 100)
  • 对于系统组件,ArkUI还为其属性预定义了一些枚举类型供开发者调用,枚举类型可以作为参数传递,但必须满足参数类型要求。

    例如,可以按以下方式配置Text组件的颜色和字体样式。

       
    1. Text('hello')
    2. .fontSize(20)
    3. .fontColor(Color.Red)
    4. .fontWeight(FontWeight.Bold)

 

配置事件

事件方法以“.”链式调用的方式配置系统组件支持的事件,建议每个事件方法单独写一行。

  • 使用箭头函数配置组件的事件方法。

       
    1. Button('Click me')
    2. .onClick(() => {
    3. this.myText = 'ArkUI';
    4. })
  • 使用箭头函数表达式配置组件的事件方法,要求使用“() => {...}”,以确保函数与组件绑定,同时符合ArkTS语法规范。

       
    1. Button('add counter')
    2. .onClick(() => {
    3. this.counter += 2;
    4. })
  • 使用组件的成员函数配置组件的事件方法,需要bind this。ArkTS语法不推荐使用成员函数配合bind this去配置组件的事件方法。

       
    1. myClickHandler(): void {
    2. this.counter += 2;
    3. }
    4. ...
    5. Button('add counter')
    6. .onClick(this.myClickHandler.bind(this))
  • 使用声明的箭头函数,可以直接调用,不需要bind this。

       
    1. fn = () => {
    2. console.info(`counter: ${this.counter}`)
    3. this.counter++
    4. }
    5. ...
    6. Button('add counter')
    7. .onClick(this.fn)
说明

箭头函数内部的this是词法作用域,由上下文确定。匿名函数可能会有this指向不明确问题,在ArkTS中不允许使用。

 

配置子组件

如果组件支持子组件配置,则需在尾随闭包"{...}"中为组件添加子组件的UI描述。Column、Row、Stack、Grid、List等组件都是容器组件。

  • 以下是简单的Column组件配置子组件的示例。

       
    1. Column() {
    2. Text('Hello')
    3. .fontSize(100)
    4. Divider()
    5. Text(this.myText)
    6. .fontSize(100)
    7. .fontColor(Color.Red)
    8. }
  • 容器组件均支持子组件配置,可以实现相对复杂的多级嵌套。

       
    1. Column() {
    2. Row() {
    3. Image('test1.jpg')
    4. .width(100)
    5. .height(100)
    6. Button('click +1')
    7. .onClick(() => {
    8. console.info('+1 clicked!');
    9. })
    10. }
    11. }

 

标签:范式,Text,Image,配置,参数,组件,UI,100,声明
From: https://www.cnblogs.com/strengthen/p/18472574

相关文章

  • UI范式:循环渲染
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • UI范式:if/else条件渲染
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • UI范式:页面和自定义组件生命周期
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • 关于 KubeSphere IDOR 安全漏洞 CVE-2024-46528 的声明及解决方案
    近期,有第三方平台的安全技术人员发现了在KubeSphere开源版3.4.1及4.1.1上存在不安全的直接对象引用(IDOR)的漏洞,该漏洞允许低权限的通过认证的攻击者在没有适当授权检查的情况下访问敏感资源。我们及时与对方进行了联系,并帮助对方解决了此问题,CVE漏洞的详细信息及问题处理过......
  • uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝扫码支付/收付款
    uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝扫码支付/收付款等功能,界面漂亮颜值高,视频商城小工具等,蚂蚁森林种树养鸡农场偷菜样样齐用于视频,商城,直播,聊天等sumer-alipay介绍uniapp精仿支付宝UI界面,首页/理财/消息/生活/口碑/我的,还有模拟支付宝......
  • uniapp精仿微信源码,基于SumerUI和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视
    uniapp精仿微信源码,基于SumerUI和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视频商城小工具等,朋友圈视频号即时聊天用于视频,商城,直播,聊天,等等场景,源码分享sumer-weixin介绍uniapp精仿微信,基于SumerUI3.0和Uniapp前端框架的一款仿微信APP应用,界面漂亮颜值高,视频......
  • c#声明枚举,通过枚举int获取枚举value、通过枚举value获取int值、判断string值是否存在
    c#声明枚举,通过枚举int获取枚举value、通过枚举value获取int值、判断string值是否存在枚举中 1、声明枚举每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。注意:第一个枚举成员的默认值为整型的0,后续枚举成员的值在前......
  • 【closerAI ComfyUI】电商模特一键换装解决方案来了!细节到位无瑕疵!再加上flux模型加持
    不得了了兄弟们。这应该是电商界的福音,电商模特一键换装解决方案来了!细节到位无瑕疵!再加上flux模型加持,这个工作流不服不行!这期我们主要讨论如何使用stablediffusioncomfyUI制作完美无瑕疵的换装工作流。**这一次我们用到的节点是catVTON节点。CatVTON介绍[CatVTON是......
  • ComfyUI-Flux-PuLID-定制写真生成工作流整合包,含提示词反推,相关软件包及工作流均已打
    本期本期带来基于PuLID-for-FLUX的ComfyUI定制写真工作流,通过一张面部参考图像生成真实感十足的高保真写真图像,基于Flux底层模型,更为写实。**其中包含“输入提示词生成图像”和“参考图像反推提示词生成图像”两套工作流,**工作流操作较简单,相关ComfyUI软件包、模型、节点、......
  • 移动开发(三):使用.NET MAUI打包第一个安卓APK完整过程
     之前给大家介绍过使用使用.NETMAUI开发第一个安卓APP,今天给大家介绍如何打包成APK,然后安装到安卓手机正常运行。这里还是沿用之前搭建好的应用程序。首先确保项目可以正常运行,具体如下图: 一、修改AndroidManifest.xml配置APP基本信息权限首先设置AndroidManifest.......