ArkUI 自定义组件
基础入门
组件可以把一段代码封装起来,目的是提高这一段代码的复用率,并且也可以减少开发人员多次编写相同的代码。一旦组件定义好了之后,在页面中只需要通过<element /> 标签引入进来就可以了。
在项目中创建一个用于存放组件的文件夹 components。目前项目文件夹的结构是这样的:

组件与页面一样都需要 hml、js、css 三个文件:
<div class="container">
<text>{{ msg }}</text>
</div>
export default {
data: {
msg: 'This is a component.'
}
}
<element />标签包含两个属性:name 和 src:
- name 属性指自定义组件名称(非必填),组件名称对大小写不敏感,默认使用小写。若没有设置 name 属性,则默认使用 hml 文件名作为组件名。
- src 属性指自定义组件 hml 文件路径(必填)。
在页面中引入组件:
<element name="DemoComp" src="../../../components/demo/index.hml"></element>
<div class="container">
<!-- DemoComp 组件 -->
<DemoComp></DemoComp>
<text>
This is a page.
</text>
</div>
!注意:组件名最好使用大驼峰命名法,主要是用于区别开基础组件名,也是为了提高可阅读性。
Props
组件可以接收一些参数,跟函数一样有参数,这样可以进行一些组件的配置,从而达到不一样的效果。
组件接收参数的接口就是 Props,实际上它是一个对象,可以有许多类型的属性:String,Number,Boolean,Array,Object,Function。
!注意:Props 的属性采用驼峰命名法,在 HML 文件中,对应的属性名必须使用短横线分隔命名法。
定义两个 Props 属性:imgSrc 和 size。
export default {
props: {
imgSrc: {
// imgSrc 属性的默认值,不传递参数时使用默认值。
default: 'https://pic.cnblogs.com/avatar/2271881/20210617130249.png'
},
size: {
default: 50
}
}
}
<div class="container" style="height: {{ size }} px; width: {{ size }} px;">
<image class="img" src="{{ imgSrc }}"></image>
</div>
在 HML 中引入组件:
<element name="Avatar" src="../../../components/avatar/index.hml"></element>
<div class="container">
<Avatar></Avatar>
<text>
This is a page.
</text>
</div>

页面成功显示了刚刚自定义的头像组件。现在,我们修改组件的 imgSrc 和 size 属性:
<Avatar size="150" img-src="https://img1.baidu.com/it/u=1723224959,3151955398&fm=26&fmt=auto"></Avatar>

ArkUI 自定义组件的更多相关文章
- Android开发之自定义组件和接口回调
说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...
- Android自定义组件
[参考的原文地址] http://blog.csdn.net/l1028386804/article/details/47101387效果图: 实现方式: 一:自定义一个含有EditText和Butt ...
- 自己写的几个android自定义组件
http://www.see-source.com/androidwidget/list.html 多多指点,尤其是自定义组件的适配问题,希望能有更好的方法
- PhoneGap: Android 自定义组件
Hello Core Demo Plugin Development(组件部署): http://docs.phonegap.com/en/2.0.0/guide_plugin-development ...
- android开发之自定义组件
android开发之自定义组件 一:自定义组件: 我认为,自定义组件就是android给我们提供的的一个空白的可以编辑的图片,它帮助我们实现的我们想要的界面,也就是通过自定义组件我们可以把我们要登入的 ...
- HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)
Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...
- HTML5 UI框架Kendo UI Web中如何创建自定义组件(二)
在前面的文章<HTML5 UI框架Kendo UI Web自定义组件(一)>中,对在Kendo UI Web中如何创建自定义组件作出了一些基础讲解,下面将继续前面的内容. 使用一个数据源 ...
- HTML5 UI框架Kendo UI Web自定义组件(一)
Kendo UI Web包含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在Kendo UI Web中如何创建自定义组件呢,在下面的文章中 ...
- 自定义组件之MoreListView
前言 本文针对自定义组件进行一些分析.还是那句老话“授之于鱼不如授之以渔”.今天要讲的是一个自定义的可以分页的ListView. 网上都讲了些ListView分页的方法,那么为什么我在这里还需要自己写 ...
随机推荐
- React简单教程-5-使用mock
前言 一个前后端分离的项目,前端人员需要对接后端的接口.如果在后端的接口没有开发好,或者没有测试版可以对接的情况下,前端人员也不能坐等后端接口写好后再开始开发. 一个项目的,理想情况下接口的规范应该是 ...
- .NET中测试代码运行时间
更新记录 本文迁移自Panda666原博客,原发布时间:2021年6月29日. 计算代码运行的时间,除了呆萌地用秒表去计时,或者可以通过Visual Studio来查看,还可以在.NET代码中使用St ...
- VR技术赋能五大领域,不止高级,更高效!
除了VR游戏.VR影视作品,究竟还有哪些产业领域会应用到VR技术并为生活带来改变呢?今天就帮大家好好梳理一下~ VR赋能交通,不只是高级 最近在网上看到了VR考驾照的新闻,网友都赞叹,现在学车都这么高 ...
- 写了个基于 MacOS + iTerm2 自动打开窗口执行命令的工具
大家好,我是秋风,今天要给大家带来的这个工具是我最近写的 一个 npm 工具.mmt 是基于 MacOS + iTerm2 ,目的主要是为了提高日常生活中的效率,接下来我带大家看看一些常用的一些场景. ...
- 从0到1搭建一款Vue可配置视频播放器组件(Npm已发布)
前言 话不多说,这篇文章主要讲述如何从0到1搭建一款适用于Vue.js的自定义配置视频播放器.我们平时在PC端网站上观看视频时,会看到有很多丰富样式的视频播放器,而我们自己写的video标签样式却是那 ...
- 安装gitlab客户端
1. 下载客户端软件包 https://pan.baidu.com/disk/home#/category?type=6&vmode=list 安装顺序: Git-2.13.3-64-bit. ...
- label问题排查:打不开标注好的图像
问题描述 之前标注好的文件,标注有bbox和若干points.选择Open Dir打开图像目录,选择Change Output Dir选择json文件所在目录.发现有些图片能正常显示标注后的状态.而有 ...
- Wabacus框架中inputbox和datepicker实现时间日历
前提是要引入WdatePicker.js. 一.年月日时分秒(中文) <inputbox type="datepicker" inputboxparams="dat ...
- 查询效率提升10倍!3种优化方案,帮你解决MySQL深分页问题
开发经常遇到分页查询的需求,但是当翻页过多的时候,就会产生深分页,导致查询效率急剧下降. 有没有什么办法,能解决深分页的问题呢? 本文总结了三种优化方案,查询效率直接提升10倍,一起学习一下. 1. ...
- AOP-动态代理
动态代理的原理代理设计模式的原理:使用一个代理将原本对象包装起来,然后用该代理对象"取代"原始对象.任何对原始对象的调用都要通过代理.代理对象决定是否以及何时将方法调用转到原始对象 ...