首页 > 其他分享 >学习笔记(四十三):@BuilderParam装饰器初始化组件的三种方式

学习笔记(四十三):@BuilderParam装饰器初始化组件的三种方式

时间:2024-11-23 23:55:46浏览次数:8  
标签:初始化 componentBuilder 自定义 BuilderParam 组件 参数 ViewEntity 四十三 content

一、参数初始化组件

@BuilderParam装饰的方法可以是有参数和无参数的两种形式,需与指向的@Builder方法类型匹配

1、定义一个类作为参数

// 定义一个对象,ui需要的数据
export class ViewEntity{
  content:string = "sssss";
}

2、定义一个自定义组件

import { ViewEntity } from "../animation/ViewEntity";

// 自定义组件
@Component
export struct CommonView{

  label: string = 'Child';
  @Builder customBuilder() {};
  @Builder customerParmsBuilder($$:ViewEntity){}
  // 无参数类型,指向的componentBuilder也是无参数类型
  @BuilderParam customBuilderParam: () => void = this.customBuilder;
  // 有参数类型,指向的overBuilder也是有参数类型的方法
  @BuilderParam customOverBuilderParam: ($$: ViewEntity) => void = this.customerParmsBuilder;

  build() {
    Column() {
      this.customBuilderParam()
      this.customOverBuilderParam(new ViewEntity() )
    }
  }
}

3、有参和无参两种使用自定义组件的方式

/**
 * @author : xqx
 * @create_day : 2024/11/21
 * @description : 首页
 */
import { HMRouter } from "@hadss/hmrouter";
import { ViewEntity } from "../animation/ViewEntity";
import { CommonView } from "../components/CommonView";

@HMRouter({
  pageUrl: 'Main',
  singleton: true,
  lifecycle: 'ExitAppLifecycle',
  animator: 'pageAnimator'
})
@Component
export struct Main {
  label: string = '使用组件的Parent';
  viewEntity : ViewEntity = new ViewEntity()
  aboutToAppear(): void {
    this.viewEntity.content = "类的content字段"
  }
  // 无参自定义组件构建函数
  @Builder
  componentBuilder() {
    Text(`${this.label}`)
  }

  // 有参自定义组件构建函数
  @Builder
  componentParmsBuilder($$: ViewEntity) {
    Text($$.content)
      .width(400)
      .height(50)
      .backgroundColor(Color.Red)
  }

  build() {
    Column() {
      // 显示当前自定义构建函数 ,所以显示文案为 使用组件的Parent
      this.componentBuilder()
      Divider()
      // 使用一个自定义组件,通过@BuilderParms装饰器 传入当前 componentBuilder和componentParmsBuilder两个构建函数
      // 传入的无参构建函数componentBuilder,显示 label内容,在CommonView里面定义的内容为Child,所以显示Child
      // 传入的有参构建函数componentParmsBuilder,参数为一个ViewEntity类的对象,内容为显示对象的content属性值,因为自定义组件内new ViewEntity,且content字段默认值为sssss,所以ui显示未sssss
      CommonView({ customBuilderParam: this.componentBuilder, customOverBuilderParam: this.componentParmsBuilder })
    }
  }
}

 

效果图:

 

 

 

 

标签:初始化,componentBuilder,自定义,BuilderParam,组件,参数,ViewEntity,四十三,content
From: https://www.cnblogs.com/xqxacm/p/18565281

相关文章

  • Abaqus2020/Contact新功能(1):干涉配合和初始化
    本文摘要(由AI生成):这篇文档主要介绍了Abaqus/Explicit中新增的干涉配合和通用接触中的初始化控制功能。干涉配合方面,Abaqus/Explicit提供了在首个分析步中逐步消除初始穿透的功能,并通过螺纹接触实例进行了说明。结果显示,除了应力集中区域以及奇异点的值外,Abaqus/Explicit和......
  • c语言程序块中初始化变量对同名变量作用域的影响
     001、[root@PC1test1]#lstest1.ctest2.c[root@PC1test1]#cattest1.c#include<stdio.h>intmain(void){inti;intx=10000;for(i=0;i<4;i++){intx=i*5;printf(......
  • 云天社区管理平台---项目初始化
    云天社区管理平台---项目初始化环境配置准备工作创建项目项目结构四、运行和调试正式开发创建项目预览项目修改布局效果展示环境配置准备工作安装HUAWEIDevEcoStudioDevEcoStudio是基于IntelliJIDEACommunity开源版本打造,为运行在HarmonyOS和OpenHarmony......
  • C++(nullptr、类型推导、初始化列表、)
    1.nullptr(掌握)nullptr是C++11推出的新的空指针,用于代替C语言的NULL。#include<iostream>usingnamespacestd;voidfunc(inti){cout<<"A"<<i<<endl;}voidfunc(char*c){cout<<"B"<<c<<en......
  • 【火山引擎】调用火山大模型的方法 | SDK安装 | 配置 | 客户端初始化 | 设置
    豆包(Doubao)是字节跳动研发的大规模预训练语言模型。目录1安装2配置访问凭证3客户端初始化4设置地域和访问域名5设置超时/重试次数1安装通过pip安装PYTHONSDK。pipinstall'volcengine-python-sdk[ark]'2配置访问凭证获取APIKey访问凭证具体步骤......
  • 网站初始化数据库失败
    网站初始化数据库失败可能由多种原因导致,这里我将列出一些常见的问题及解决方法:数据库连接信息错误:检查数据库的用户名、密码、地址和端口是否正确。网络问题:确保服务器与数据库之间的网络连接正常。数据库服务未启动:确认数据库服务已经启动并正在运行。数据库版本兼容性:确认......
  • C++——有Date类,私有成员:月日年,公有成员:函数,其作用输出月日年。一个构造函数有三个参
    没注释的源代码#include<iostream>usingnamespacestd;classDate{private:  intmonth;  intday;  intyear;public:  voiddisplay()  {    cout<<month<<"/"<<day<<"/"<<year<<endl;......
  • Hive3.1.3 环境搭建之初始化数据到Oracle
    1、新建配置文件hive-site.xml<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><property> <name>jav......
  • Autosar EcuM配置-初始化及下电执行函数-基于ETAS软件
    文章目录前言EcuMCommonConfigurationEcuMDriverInitListOneEcuMModuleIDEcuMModuleParameterEcuMModuleServiceEcuMRbDriverInitCoreIdEcuMDriverInitListZeroEcuMGeneralEcuMRbOnGoOffOneCalloutEcuMRbCalloutFunctionEcuMRbModuleIDEcuMRb......
  • 二维数组的创建和初始化
    1.二维数组的概念按我的理解,其实二数组就是有多个一维数组组成的,多个二维数组作为元素,那就是三维数组,多个三维数组就是多维数组。2.二维数组的创建1.type arr_name[常量值1 ][常量值2 ]={};2.例如:3.intarr[3][6];4.doubledata[4][6];1.type代表类型2.arr表示数......