鸿蒙5.0开发进阶:JS组件-通用属性

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


通用属性

说明

从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

常规属性

常规属性是指组件普遍支持的用来设置组件基本标识和外观显示特征的属性。

名称类型默认值必填描述
idstring-组件的唯一标识。
stylestring-组件的样式声明。
classstring-组件的样式类,用于引用样式表。
refstring-用来指定指向子元素或子组件的引用信息,该引用将注册到父组件的$refs 属性对象上。
disabledbooleanfalse当前组件是否被禁用,在禁用场景下,组件将无法响应用户交互。
datastring-

给当前组件设置data属性,进行相应的数据存储和读取。JS文件中:

- 在事件回调中使用 e.target.attr.data 读取数据,e为事件回调函数入参。

- 使用$element或者$refs获取DOM元素后,通过attr.data 进行访问。

从API Version 6 开始,建议使用data-*。

data-*6+string-

给当前组件设置data-*属性,进行相应的数据存储和读取。大小写不敏感,如data-A和data-a默认相同。JS文件中:

- 在事件回调中使用 e.target.dataSet.a读取数据,e为事件回调函数入参。

- 使用$element或者$refs获取DOM元素后,通过dataSet.a进行访问。

click-effect5+string-

通过这个属性可以设置组件的弹性点击效果,当前支持如下三种效果:

- spring-small:建议小面积组件设置,缩放(90%)。

- spring-medium:建议中面积组件设置,缩放(95%)。

- spring-large:建议大面积组件设置,缩放(95%)。

dir6+stringauto

设置元素布局模式,支持设置rtl、ltr和auto三种属性值:

- rtl:使用从右往左布局模式。

- ltr:使用从左往右布局模式。

- auto:跟随系统语言环境。

渲染属性

渲染属性是指组件普遍支持的用来设置组件是否渲染的属性。

名称类型默认值描述
forArray-根据设置的数据列表,展开当前元素。
ifboolean-根据设置的boolean值,添加或移除当前元素。
showboolean-根据设置的boolean值,显示或隐藏当前元素。

说明

属性和样式不能混用,不能在属性字段中进行样式设置。

示例

示例1

<!-- xxx.hml -->
<div id="container">
    <button class="btn" type="capsule" value="toggleDisplay" onclick="toggleDisplay"></button>
    <list class="list">
        <list-item for="{{ array }}" class="listItem">
            <text class="text" onclick="toggleShow" show="{{ visible }}"
                  if="{{ display }}">{{ $item.value }}</text>
        </list-item>
    </list>
</div>
/* xxx.css */
#container {
    flex-direction: column;
    width: 100%;
    margin-top: 10px;
}
.text {
    font-size: 50px;
    font-weight: 500;
    margin-left: 12px;
}
.listItem {
    width: 100%;
    height: 100px;
    line-height: 60px;
    border-bottom: 1px solid #DEDEDE;
    font-size: 20px;
}
.btn{
    width: 280px;
    font-size: 26px;
    margin: 10px 0;
}
// xxx.js
export default {
    data: {
        visible: true,
        display: true,
        title: "",
        i: 4,
        array: [
            {"value": "列表文本0"},
            {"value": "列表文本1"},
            {"value": "列表文本2"},
            {"value": "列表文本3"},
        ],
    },
    toggleShow: function() {
        this.array.push({"value": "列表文本" + this.i })
        this.i++
    },
    toggleDisplay: function() {
        this.display = !this.display
    },
}

示例2

<!-- xxx.hml -->
<div class="container">
    <div>
        <text class="text1" dir='rtl' >hello world</text>
    </div>
    <div>
        <text class="text2" dir='ltr' >hello world</text>
    </div>
</div>
/* xxx.css */
.container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
}
.text1{
    width: 90%;
    height: 100px;
    background-color: aqua;
}
.text2{
    width: 90%;
    height: 100px;
    background-color: blue;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值