首页 > 其他分享 >第47节 ArkTS 创建自定义组件

第47节 ArkTS 创建自定义组件

时间:2024-12-17 13:59:14浏览次数:8  
标签:ArkTS 函数 自定义 47 Component MyComponent 组件

在 ArkTS 中创建自定义组件是一个相对简单但功能强大的过程。以下是如何在 ArkTS 中创建和使用自定义组件的详细步骤:

一、定义自定义组件

1. 使用@Component注解:为了注册一个组件,使其能够在其他文件中被引用,你需要使用@Component 注解。例如:
@Component
struct MyComponent {
build() {
Column() {
Text('自定义组件')
Button('点击')
}
}
}
  1. 组件命名规则:一个项目下所有的自定义组件名不可以重复,无论是否在一个 .ets 文件中。
  2. 根组件要求:被 @Component 装饰的组件(包括主组件和其他自定义组件),其 build() 方法中必须有且仅有一个根容器组件。

二、自定义组件的属性与样式

  1.  属性:你可以在组件中定义属性,并通过父组件传递值来动态改变这些属性。例如,通过 @State定义状态变量,并在 build() 方法中使用这些变量。
  2. 样式:组件内的样式不会受外界调用时的影响,只会缩放(可能还会直接少显示一部分),不会改变颜色、位置、方法等。因此,在使用组件时,需要给其留有充足的位置。

三、自定义组件的成员变量与函数

  1. 成员变量:为了更好的让自定义组件灵活使用,ArkTS允许对自定义组件里面的成员变量进行赋值,但是不允许对成员函数赋值。如果要改变函数,则需要使用箭头函数的形式来调用函数。
  2. 成员函数:你可以在组件中定义成员函数,并在需要时调用它们。例如,定义一个按钮的点击事件处理函数。

四、使用@BuilderParams传递UI组件

在组件中,你可以使用 @BuilderParam 来指定一个为箭头函数的成员参数,这个箭头函数可以设置一个初始的默认值。这样,父组件就可以在调用子组件时,传入自定义的结构来替换子组件的默认结构。 这类似于Vue中的插槽功能。

五、自定义布局

如果默认的布局方式不能满足你的需求,你还可以自定义布局。这通常涉及到重写 onMeasureSize 和onPlaceChildren 方法,以精确控制子组件的位置和大小。

六、示例

以下是一个完整的示例,展示了如何创建一个自定义组件并在父组件中使用它:
// MyComponent.ets
@Component
struct MyComponent {
@State message: string = '这是一个自定义组件'
build() {
Column() {
Text(this.message)
.fontSize(20)
.width(200)
.height(20)
.textAlign(TextAlign.Center)
.fontColor('#ccc')
.backgroundColor(Color.White)
}
}
}
// Index.ets
import { MyComponent } from '../components/MyComponent'
@Entry
@Component
struct Index {
build() {
Column() {
MyComponent()
.width('100%')
.backgroundColor('#BFECFF') // 父组件设置的背景颜色不会改变子组件的背景颜色
}
}
}
在这个示例中,我们定义了一个名为 MyComponent 的自定义组件,并在 Index 组件中使用了它。注意,尽管我们在 Index 组件中设置了背景颜色,但这并不会改变 MyComponent 组件的内部样式。 通过以上步骤,你就可以在 ArkTS 中创建和使用自定义组件了。这些组件可以帮助你构建更复杂、更灵活的用户界面。

标签:ArkTS,函数,自定义,47,Component,MyComponent,组件
From: https://blog.csdn.net/m0_60889254/article/details/144530856

相关文章

  • Vue实现3D卡片效果,几行代码搞定,旋转、立体、自定义组件、嵌套任意内容
    文章目录效果预览1.组件结构2.脚本部分(`<script>`)属性(`props`)数据(`data`)方法(`methods`)生命周期钩子(`mounted`)3.样式部分(`<stylescoped>`)实现思路总结完整代码[高清壁纸,古风美女,萌趣表情包,创意视频,唯美图片https://coder4j.com/](https://coder4j......
  • SSM高校社团学生会管理系统--47676(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP
    摘  要本论文基于SSM框架,设计和实现了一个高校社团学生会管理系统。该系统旨在提供一个全面、高效、智能的高校社团学生会管理平台,以便管理者可以迅速且便捷地进行各项管理工作,并及时向社团成员提供准确的社团信息。  该系统通过角色划分为社团成员、社团社长和管理员......
  • Go-Zero自定义goctl实战:定制化模板,加速你的微服务开发效率
    zhuan: https://www.cnblogs.com/wangzhongyang/p/18181397-------------------Go-Zero自定义goctl实战:定制化模板,加速你的微服务开发效率(四) 前言上一篇文章带你实现了Go-Zero和goctl:解锁微服务开发的神器,快速上手指南,本文将继续深入探讨Go-Zero的强大之处,并介绍如何使用......
  • 1847. 最近的房间
      一个酒店里有 n 个房间,这些房间用二维整数数组 rooms 表示,其中 rooms[i]=[roomIdi,sizei] 表示有一个房间号为 roomIdi 的房间且它的面积为 sizei 。每一个房间号 roomIdi 保证是 独一无二 的。同时给你 k 个查询,用二维数组 queries 表示,其中......
  • 开发自定义 UDFs 和库
    开发自定义UDFs和库1.创建项目结构使用构建工具设置项目推荐使用SBT或Maven来管理依赖项和构建过程。以下是使用SBT的示例:build.sbt文件配置:name:="CustomUDFLibrary"version:="1.0"scalaVersion:="2.12.15"//根据你的Spark版本选择合适的Sca......
  • QT 自动伸缩的工具栏和自定义配置的工具栏 QToolBar更多按钮的样式设置
    1.实现目标如下图所示,播放窗口的工具栏,有很多按钮,当窗口的宽度不够时,能够自动生成更多按钮,点击更过按钮就会出现多余按钮的menu菜单;2。实现方法一开始我还想着加个按钮控件,在播放窗口resize函数中判断工具栏的宽度能容纳几个按钮,判断宽度是否够,如果不够的话,则要显示更多按钮,点......
  • 《鸿蒙开发-答案之书》自定义弹框
    《鸿蒙开发-答案之书》自定义弹框系统的弹框不适用的,很难用。下面我们来自定义弹框试试步骤一:用@CustomDialog注解,标识你是自定义弹框,然后在build里面写你弹框布局示例代码如下:@CustomDialogexportstructChatGoldStandardDialog{goldSum:numbercontroller:C......
  • XSYL10103利用控件获取值也可以用自定义
    stringCKID=this._page.GetControlValue("btnCKMC");pu10103,btnCKMC是一个下拉框namespaceXSYLKCGL{publicclassCKWLDY:ISuwfBus{///<summary>///initialization///</summary>privateSlnS......
  • LeetCode题练习与总结:连接词--472
    一、题目描述给你一个 不含重复 单词的字符串数组 words ,请你找出并返回 words 中的所有 连接词 。连接词 定义为:一个完全由给定数组中的至少两个较短单词(不一定是不同的两个单词)组成的字符串。示例1:输入:words=["cat","cats","catsdogcats","dog","dogcatsdog......
  • LeetCode题练习与总结:火柴拼正方形--473
    一、题目描述你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。如果你能使这个正方形,则返回 true ,否则返......