HarmonyOS 鸿蒙Next 在自定义page页面添加类装饰器无效

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 在自定义page页面添加类装饰器无效

想在page上添加自定义的类装饰器,运行时不回调

2 回复
// 权限外部组件
[@Component](/user/Component)
struct PermissionWrapper {
[@State](/user/State) permissionKey: string = "NONE"
[@BuilderParam](/user/BuilderParam) closure: () => void
[@State](/user/State) permissionInfo: PermissionInfo = new PermissionInfo()

aboutToAppear(): void {
this.permissionInfo = PermissionModule.getUserPermission(this.permissionKey)
}
build() {
Column() {
this.closure()
}
// 做权限相关处理
.visibility(this.permissionInfo.visibility)
.onTouch(() => {
// 事件拦截
})
}
}
// 组件内做一层包裹
[@Component](/user/Component)
struct HelloPage {
[@State](/user/State) message: string = "Hello World"
build() {
Column() {
// 非侵入式实现
PermissionWrapper({permissionKey: PermissionModule.PERMISSION_1}) {
Text(${this.message})
.id('text')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: 'container', align: VerticalAlign.Center },
middle: { anchor: 'container', align: HorizontalAlign.Center }
})
}
}
.height('100%')
.width('100%')
}
}

上述方式可以集中对权限逻辑的处理,可以自行选择权限传入的形式。

针对HarmonyOS 鸿蒙Next在自定义page页面添加类装饰器无效的问题,这通常是由于ArkUI的特定限制所导致的。在HarmonyOS中,ArkUI不支持在组件上直接添加自定义类装饰器,它仅支持类、方法和变量的自定义装饰器,并且这些装饰器必须符合ArkTS的语言规范。

要解决此问题,请确保你的装饰器是定义在类、方法或变量上,而不是直接添加在组件或页面标签上。同时,检查你的装饰器定义是否符合ArkTS的语法要求,包括正确的参数类型和数量。

此外,还需要确认你的开发环境(如IDE、SDK版本等)与HarmonyOS鸿蒙Next系统的要求是否匹配。如果环境问题导致装饰器无法被正确识别或应用,那么更新或调整开发环境可能是必要的。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部