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

harmonyOS 自定义组件基础演示讲解

上文 HarmonyOS组件属性控制 链式编程格式推荐我们讲了一些系统组件 可以传入一些事件和参数 来达到一些不同的效果

其实 我们还可以用自己写的组件
那么 组件这么写?
其实 我们的 page 内部结果 就是一个组件
在这里插入图片描述
harmonyOS的概念 万物皆组件
那么 我们就可以在他下面加一个
在这里插入图片描述
可以看到 这样也是没有问题的

但最上面 有一个 @Entry装饰器
整个文件中只能有一个组件被 它修饰 修饰了@Entry就是这个文件的入口 每次进入页面 都是展示出 @Entry修饰的组件内容

我们第二个组件 目前这个写法是有问题的 build组件下必须有 且只能有一个组件 作为组件的根元素组件

我们可以将page代码改写如下

@Entry
@Component
struct Index {build() {Row() {Column() {imist();imist();imist();}.width('100%')}.height('100%')}
}@Component
struct imist {build() {Row() {Image($r('app.media.img')).width(20).height(20).margin(15)Text("你好").fontColor(Color.White)}.backgroundColor(Color.Blue).borderRadius(25).margin({top: 15}).width("80%")}
}

这里 我们在page主体下面又写了一个组件 内容大概是 Row声明一行 然后 这一行中 有一个 image图片组件 然后 图片的高宽都设为20 给 15的边距

然后 Text文本组件 内容你好 然后 给他设置了个字体颜色 Color中的白色White

然后 Row 这一行样式设置为 宽度百分之 80 边距 只设上边距 15 然后 背景颜色设为Blue 蓝色 圆角效果 25

然后 我们页面主体 @Entry 修饰的入口组件 用了三个我们写的 imist 组件
运行结果如下
在这里插入图片描述

但是这样 如果我们想文本不同呢?
自定义组件 是可以传递参数的哦

我们将代码改成这样

@Entry
@Component
struct Index {build() {Row() {Column() {imist({content: "第一个组件接到值了"});imist({content: "第二个组件也接到啦"});imist({content: "我这边也OK"});}.width('100%')}.height('100%')}
}@Component
struct imist {private content:string = "青山不改,绿水长流";build() {Row() {Image($r('app.media.img')).width(20).height(20).margin(15)Text(this.content).fontColor(Color.White)}.backgroundColor(Color.Blue).borderRadius(25).margin({top: 15}).width("80%")}
}

我们这里父组件 传递了一个对象 里面有一个字段 content 对应的都是一个字符串内容

然后子组件中声明这个私有参数 content 声明为 string 字符串类型 然后 给了个默认值 “青山不改,绿水长流”
然后 我们的 Text组件用了这个变量

运行结果如下
在这里插入图片描述
可以看到 外面传递值是生效了的

http://www.lryc.cn/news/263658.html

相关文章:

  • 我的创作纪念日——成为创作者第1024天
  • 正点原子驱动开发BUG(一)--SPI无法正常通信
  • SpringBoot接入轻量级分布式日志框架GrayLog
  • 光电器件:感知光与电的桥梁
  • Ceph入门到精通-smartctl 查看硬盘参数
  • Module build failed: TypeError: this.getOptions is not a function
  • 蓝牙电子价签芯片OM6626/OM628超低功耗替代NRF52832
  • ELK(八)—Metricbeat部署
  • Ansible自动化运维以及模块使用
  • 数据分析场景下,企业大模型选型的思路与建议
  • Mongodb复制集架构
  • 云原生之深入解析Kubernetes集群发生网络异常时如何排查
  • error: C2039: “qt_metacast“: 不是 “***“ 的成员
  • 量子计算:开启IT领域的新时代
  • 数据可视化---柱状图
  • 第十七章 爬虫scrapy登录与中间件2
  • 运维知识点-Kubernetes_K8s
  • 某电子文档安全管理系统存在任意用户登录漏洞
  • 音视频参数介绍
  • vue中使用minio上传文件
  • MySQL表的增删改查(初阶)
  • 搜维尔科技:关于“第九届元宇宙数字人设计大赛”线上+线下巡回宣讲本周高校行程通告!
  • Gemini 1.0:Google推出的全新AI模型,改变生成式人工智能领域的游戏规则!
  • excel打开并操作CAD(excel-vba实现)_另附:CAD打开excel
  • Prolist组件实现动态竖排展示
  • 基于JAVA的海南旅游景点推荐系统 开源项目
  • 【Apache-StreamPark】Flink 开发利器 StreamPark 的介绍、安装、使用
  • 【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2)
  • docker服务启动报错docker.service holdoff time over, scheduling restart.
  • cfa一级考生复习经验分享系列(八)