【HarmonyOS Next之旅】ArkTS语法(四) -> 使用限制与扩展

举报
枫叶丹 发表于 2025/05/27 23:02:32 2025/05/27
【摘要】 装饰器类型本地初始化通过构造函数参数初始化@State必须可选@Prop禁止必须@Link禁止必须必须禁止必须禁止@Provide必须可选@Consume禁止禁止禁止必须常规成员变量推荐可选从上表中可以看出:@State变量需要本地初始化,初始化的值可以被构造参数覆盖。@Prop和@Link变量必须且仅通过构造函数参数进行初始化。从父组件中的变量(下)到子组件中的变量(右)@State@Link@


目录

1 -> 在生成器函数中的使用限制

2 -> 变量的双向绑定

3 -> 自定义组件成员变量初始化的方式与约束

1 -> 在生成器函数中的使用限制
ArkTS语言的使用在生成器函数中存在一定的限制:

表达式仅允许在字符串(${expression})、if条件、ForEach的参数和组件的参数中使用;
任何表达式都不能导致任何应用程序状态变量(@State、@Link、@Prop)的改变,否则会导致未定义和潜在不稳定的框架行为;
生成器函数内部不能有局部变量。
上述限制都不适用于事件处理函数(例如onClick)的匿名函数实现。

2 -> 变量的双向绑定
ArkTS支持通过$$双向绑定变量,通常应用于状态值频繁改变的变量。

当前$$支持基础类型变量,以及@State、@Link和@Prop装饰的变量。
当前$$仅支持bindPopup属性的show参数和@State变量之间的渲染,Radio组件的checked属性。

绑定的变量变更时,仅渲染当前组件,提高渲染速度。 @Entry @Component struct bindPopup { @State customPopup: boolean = false build() { Column() { Button(){ Text('Popup') } .onClick(()=>{ this.customPopup = !this.customPopup }) .bindPopup( $$this.customPopup, { message: "showPopup" } ) } } } 3 -> 自定义组件成员变量初始化的方式与约束 组件的成员变量可以通过两种方式初始化: 本地初始化: @State counter: Counter = new Counter() 在构造组件时通过构造参数初始化: MyComponent({counter: $myCounter}) 装饰器类型 本地初始化 通过构造函数参数初始化 @State 必须 可选 @Prop 禁止 必须 @Link 禁止 必须 @StorageLink 必须 禁止 @StorageProp 必须 禁止 @Provide 必须 可选 @Consume 禁止 禁止 @ObjectLink 禁止 必须 常规成员变量 推荐 可选 从上表中可以看出: 通过构造函数方法初始化成员变量,需要遵循如下规则: 从父组件中的变量(下)到子组件中的变量(右) @State @Link @Prop 常规变量 @State 不允许 允许 允许 允许 @Link 不允许 允许 不推荐 允许 @Prop 不允许 不允许 允许 允许 @StorageLink 不允许 允许 不允许 允许 @StorageProp 不允许 不允许 不允许 允许 常规变量 允许 不允许 不允许 允许 从上表中可以看出: 感谢各位大佬支持!!! 互三啦!!! ​
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。