鸿蒙中常用的修饰符汇总

●@Entry- 修饰成为页面
●@Component -修饰成为组件
●@Preview - 让组件可预览
●@State - 在组件内部定义响应式数据- 必须给初始值
●@Prop- 接收父组件的响应式数据- 可以给初始值 也可以不给
●@Builder- 声明轻量复用UI
●@BuilderParam - 接收传入的轻量复用UI- 可以给初始值 也可以不给(如果不给的话,调用时需要判断)
●@CustomDialog- 修饰自定义弹层
●@Styles- 定义组件复用样式-不允许传参数,可以定义在组件内或全局
●@Extend- 修饰某个特定组件的样式复用集合- 允许传参数,仅支持在全局定义,不支持在组件内部定义
●@Link- 可以实现父-子的双向绑定- 注意: $$值得是组件内的双向绑定, $$同样可以实现和Link绑定(必须不能给初始值)
●@LocalStorageProp 单向读取LocalStorage共享的属性(必须给初始值)
●@LocalStorageLink 。双向读取LocalStorage共享的属性 必须给初始值)

●@StorageProp 单向读取AppStorage共享的属性必须给初始值

●@StorageLink 双向读取AppStorage共享的属性必须给初始值
新增- API11新增
●@Require装饰器:校验构造传参
●@Track- 用来标记一个对象中哪些字段可以被更新和使用-如果一个Track都没有,那无所谓,只要有一个Track, 只有被track标记的字段才可以被使用
●@ObjectLink- 它可以实现局部的数据更新-但是必须和Observed修饰的class配合使用,不能在Entry修饰的组件中使用ObjectLink,场景是子组件想要局部组件更新

●@Watch-用于监听状态变量的变化,当状态变量变化时,@Watch的回调方法将被调用。遵循状态变量前后严格相等===。第一次初始化不会执行

●@AnimatableExtend装饰器:定义不可动画属性可动画化,达到自定义可动画效果

<think>嗯,用户想了解鸿蒙系统中如何使用自定义修饰符。首先,我需要回忆一下HarmonyOS的文档,特别是ArkUI部分的修饰符相关内容。记得修饰符在声明式UI中用于动态修改组件样式或行为,类似其他框架的修饰符概念。 首先,用户可能需要知道什么是自定义修饰符,以及为什么需要它。可能步骤包括定义修饰符类、实现修饰逻辑、应用修饰符到组件。需要确保语法正确,比如使用@Extend和@AnimatableExtend装饰器,这两个在HarmonyOS中应该常用。 然后,考虑到用户可能对具体代码示例感兴趣,应该给出一个简单的例子,比如边框和颜色的修饰符。另外,动画修饰符也是常见需求,可能需要@AnimatableExtend,并配合状态管理,比如@State来控制动画。 还要注意说明修饰符的链式调用,这样用户知道可以组合多个修饰符。另外,使用时的注意事项,比如参数类型限制或兼容性,需要提醒用户,避免出错。 可能用户在使用过程中会遇到性能问题,或者如何复用修饰符,这些也应该在注意事项中提到。需要确保引用的文档正确,比如引用官方指南或开发文档中的内容,这里可能需要查找相关资源,比如HarmonyOS的ArkUI开发指南,确保引用的准确性。 最后,生成相关问题时要围绕修饰符的扩展、性能优化、对比其他框架、动画实现等,帮助用户深入理解。需要检查回答是否符合之前的系统级指令,比如数学公式的格式是否正确,虽然这个问题可能不涉及数学,但如果有代码块要正确使用反引号包裹,并指定语言类型。 总结下来,回答的结构应该是先介绍概念,再分步骤说明使用方法,提供示例代码,然后注意事项,最后相关问题。确保每个部分都清晰,并正确引用官方文档作为支持。</think>### HarmonyOS自定义修饰符使用指南 在HarmonyOS的ArkUI框架中,自定义修饰符通过@Extend/@AnimatableExtend装饰器实现,用于扩展组件样式能力[^1]。以下是具体实现步骤: #### 一、基础修饰符定义 ```typescript // 定义颜色+边框修饰符 @Extend(Text) function customStyle( color: ResourceColor, borderWidth: number = 1 ) { .fontColor(color) .border({ width: borderWidth, color }) } // 应用示例 Text('Hello') .customStyle(Color.Red, 2) // 链式调用 ``` #### 二、动画修饰符定义 ```typescript @AnimatableExtend(Text) function animatedScale( scale: number = 1 ) { .scale({ x: scale, y: scale }) } // 配合状态管理 @State isScaled: boolean = false Text('Click') .animatedScale(this.isScaled ? 1.2 : 1) .onClick(() => { this.isScaled = !this.isScaled }) ``` #### 三、参数传递规则 1. 支持基础类型参数:number/string/boolean 2. 支持资源类型参数:ResourceColor/ResourceStr 3. 支持对象参数(需定义接口类型) #### 注意事项 1. 修饰符必须定义在全局作用域 2. @AnimatableExtend需配合动画属性使用 3. 链式调用顺序影响最终样式[^1]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值