当前位置: 首页 > article >正文

HarmonyOS Next应用开发——@build构建函数的使用

@builder构建函数

ArkUI还提供了一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。

组件内构建函数
@Entry
@Component
struct Test1 {
  @State message: string = 'Hello World'
  // 构建组件内ui
  @Builder gentext(txt){
    Text(txt)
      .border({width:1,radius:5,color:Color.Red})
      .fontSize(22)
      .padding(5)
      .width('100%')
  }
  build() {
    Row() {
      Column() {
        // 使用组件内ui
        this.gentext(this.message)
      }
      .width('100%')
    }
    .height('100%')
  }
}
全局构建函数
/**
 *作者:gxx
 *日期:2024-03-13 18:41:57
 *介绍:
 *全局builder构建
 **/

@Builder export function gentext(txt){
  Text(txt)
    .border({width:1,radius:5,color:Color.Blue})
    .fontSize(22)
    .padding(5)
    .width('100%')
}
import { gentext } from '../components/builders'
@Entry
@Component
struct Test1 {
  @State message: string = 'Hello World'
  // 构建组件内ui
  @Builder gentext(txt){
    Text(txt)
      .border({width:1,radius:5,color:Color.Red})
      .fontSize(22)
      .padding(5)
      .width('100%')
  }
  build() {
    Row() {
      Column() {
        // 使用组件内ui
        this.gentext(this.message)
        // 使用全局builder
        gentext(this.message)
      }
      .width('100%')
    }
    .height('100%')
  }
}
构建函数传参
按值传递参数

上面的案例就是使用了按值传递,函数内只是获取了值。如果数据发生变化,组件不会刷新。

按引用传递参数

按引用传递参数时,传递的参数可为状态变量,且状态变量的改变会引起@Builder方法内的UI刷新。ArkUI提供$$作为按引用传递参数的范式。

interface param{
    txt:string
}
// 按引用传递
@Builder export function gentext1($$:param){
  Text($$.txt)
    .border({width:1,radius:5,color:Color.Blue})
    .fontSize(22)
    .padding(5)
    .width('100%')
}
// 按照引用传递
        gentext1({txt:this.message})
        Button('修改')
          .width('60%')
          .onClick(()=>{
            // 修改当前值会引起builder构建界面改变
            this.message='hello arkui'
          })


http://www.kler.cn/news/328288.html

相关文章:

  • 每天一个数据分析题(四百九十一)- 主成分分析与因子分析
  • linux下recoketmq安装教程
  • JVM有哪些参数以及如何使用
  • 基于Java+SQL Server2008开发的(CS界面)个人财物管理系统
  • 【深度学习】(6)--图像数据增强
  • 信息安全工程师(16)密码学概况
  • HarmonyOS应用六之应用程序进阶一
  • 服装时尚与动漫游戏的跨界联动:创新运营与策划策略研究
  • [论文阅读] ChartInstruct: Instruction Tuning for Chart Comprehension and Reasoning
  • C++_unique_ptr_一个类Frame的普通指针fr初始化一个unique_ptr, 这个普通指针还有管理权吗?
  • 蓝桥杯--STM32G431RBT6(TIM定时器的输出频率和占空比,含详细原理介绍和使用方法)
  • Git Stash: 管理临时更改的利器
  • 基于C+++Mysql实现(CS界面)图书管理系统
  • 笔墨歌盛世 丹青绘匠心,艺术赋能“百千万工程”
  • 了解独享IP的概念及其独特优势
  • 【STM32单片机_(HAL库)】4-3【定时器TIM】定时器输入捕获实验配置步骤
  • 大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
  • 音视频通话 SDK
  • WSL (Linux)配置 Rust 开发调试环境
  • Vue创建一个web项目实现布局和路由
  • opencv实战项目二十八:基于Shi-Tomasi算法的箱子角点检测
  • 解决AWS Organizatiion邀请多个Linker账号数量限额问题
  • iwebsec靶场 解析漏洞通关笔记2-Nginx解析漏洞
  • Git的相关使用(工作常用)
  • 【深度学习基础模型】递归神经网络 (Recurrent Neural Networks, RNN) 详细理解并附实现代码。
  • 深蕾半导体Astra™ SL1620详细介绍,嵌入式物联网处理器
  • C++入门(有C语言基础)
  • 相亲交友系统平台的变革
  • JMeter压测HTTPS 在window 11处理SSL证书认证
  • 个人常用AI工具集合