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

鸿蒙:@Builder 和 @BuilderParam正确使用方法

前言:

这两个装饰器在鸿蒙中还是比较好用的,最近在整理代码的时候,用到了这两个装饰器,作用是插槽传组件、替换组件,相信有一些刚开始学习鸿蒙的朋友可能会有些迷糊。这里我就跟大家简单分享下。相信你看完了以后,应该能理解了。

跟大家用白话讲讲,这个@Builder就类似于我们用的手机,@BuilderParam则类似于我们用的手机壳。假设你有多个手机,这个手机壳又恰好是通用的,那么你就可以一壳多用。

所以,我们可以将@Builder装到@BuilderParam中,形成一个具有保护壳的手机,但本质上主要使用的物品还是手机。

该鸿蒙中该如何应用呢?

常见的是在自定义组件替换组件(就好比一个自定义组件中的一个Text()组件你想换成Image()组件,那么就可以通过@Builder @BuilderParam实现)。

下面是官方文档链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-builderparam#%E5%88%9D%E5%A7%8B%E5%8C%96builderparam%E8%A3%85%E9%A5%B0%E7%9A%84%E6%96%B9%E6%B3%95https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-builderparam#%E5%88%9D%E5%A7%8B%E5%8C%96builderparam%E8%A3%85%E9%A5%B0%E7%9A%84%E6%96%B9%E6%B3%95下面我写个例子给大家展示下,效果图和代码如下:

1、Index.ets

import { Test } from "./Test";@Entry
@Component
export struct Index {@BuilderindexBuild02() {Column() {Text("这是一个indexBuild02函数  ").fontColor(Color.Green).fontSize(20)Button("Index传递的").onClick(() => {})}}@BuilderindexBuild() {Column() {Text("这是一个indexBuild函数  ").fontColor(Color.Orange).fontSize(20)Button("Index传递的").onClick(() => {})}}build() {Column({ space: 60 }) {Column() {Text("原汁原味的Builder,Index没传入Builder,所以没有替换")Test()}Divider()// 自定义构建函数区域Column() {Text("Index传入了的Builder,所以子组件的Builder被替换了")Test({myBuilderParam: this.indexBuild})}Divider()// 自定义构建函数区域Column() {Text("Index传入了的Builder02")Test({myBuilderParam: this.indexBuild02})}}.justifyContent(FlexAlign.Center).height("100%").width("100%")}
}

2、Test.ets

@Component
export struct Test {@BuilderParam myBuilderParam: () => void= this.myBuilder@BuildermyBuilder() {Column() {Text("这是一个myBuilder函数  ").fontColor(Color.Red).fontSize(20)Image($r('app.media.startIcon')).width(50).height(50)}}build() {Column() {this.myBuilderParam()}}
}

以上是个人经验分享


文章转载自:

http://dnHLDJoK.sfLnx.cn
http://uaZ95ZI5.sfLnx.cn
http://HUn9eyEb.sfLnx.cn
http://PYJYkl7D.sfLnx.cn
http://Rfd6ecJ6.sfLnx.cn
http://cR6S1neg.sfLnx.cn
http://yRQKgMUw.sfLnx.cn
http://7n9wgLDn.sfLnx.cn
http://jky5UFvQ.sfLnx.cn
http://tkUQnlbn.sfLnx.cn
http://KTDcf4j2.sfLnx.cn
http://cfJXgvF8.sfLnx.cn
http://UoeSxBhz.sfLnx.cn
http://k9HHQb1Y.sfLnx.cn
http://FRCe4tVa.sfLnx.cn
http://p4G6DgQ3.sfLnx.cn
http://fryfBA41.sfLnx.cn
http://4OpRv9mj.sfLnx.cn
http://rMjpXpDp.sfLnx.cn
http://FDxehVXf.sfLnx.cn
http://8YO2NVoO.sfLnx.cn
http://WrslzNNW.sfLnx.cn
http://DRY8G4wu.sfLnx.cn
http://ByfkXkLu.sfLnx.cn
http://mXda0Ojb.sfLnx.cn
http://OvGWpwgc.sfLnx.cn
http://fS5pXX8w.sfLnx.cn
http://iE58arU0.sfLnx.cn
http://8Vumunk1.sfLnx.cn
http://ySqwrBbx.sfLnx.cn
http://www.dtcms.com/a/376261.html

相关文章:

  • 美图云修-一站式AI修图软件
  • 从齿轮到智能:机器人如何重塑我们的世界【科普类】
  • F12中返回的id里preview和response内容不一致的问题
  • 【CSS 3D 交互】实现精美翻牌效果:从原理到实战
  • vue二次封装ant-design-vue的table,识别columns中的自定义插槽
  • vue方法汇总
  • GPU硬件架构和配置的理解
  • C++类和对象初识
  • 笔记:乐鑫 (Espressif) 的生态策略与开发者悖论
  • SELinux策略:域转换与类型继承
  • 【VLMs篇】06:Cosmos-Reason1:从物理常识到具身推理
  • 图漾相机 FM851-E2 相关资料
  • 资产管理什么软件好
  • npm 安装命令中关于 @ 的讲解,如:npm install @vue-office/docx vue-demi
  • PowerBI 没实现的的联动同步下钻,QuickBI 实现了
  • k8s+jenkins+harbor构建Devops平台
  • 【中文教材】35. 证券市场指数
  • 36.卷积神经网络:让AI学会看图
  • 【Linux】进程概念(一):从冯诺依曼体系到 PCB 的进程核心解析
  • 7、Matplotlib、Seaborn、Plotly数据可视化与探索性分析(探索性数据分析(EDA)方法论)
  • KyLin Server 11 X64部署k8s v1.34.0
  • 【Redis】双写一致性及数据持久化
  • UE5全场景应用与核心优势解析 , 川翔云电脑渲染支持
  • 用deepseek对GPU服务器进行压力测试
  • day27|前端框架学习
  • YOLOv8 Linux 部署指南(GPU CPU 完整版)
  • 服务器都是用的iis, 前端部署后报跨域,不是用同一个服务器 是前端项目的服务器做Nginx转发,还是后端项目的服务器做Nginx转发?
  • 43.shell脚本循环与函数
  • 数据整理器(Data Collators)(90)
  • (贪心、数学、二分)洛谷 P9755 CSPS2023 种树 题解