HarmonyOS 鸿蒙Next:是否可以对@Styles和@Extend()所装饰的方法使用export导出

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

HarmonyOS 鸿蒙Next:是否可以对@Styles@Extend()所装饰的方法使用export导出

问题描述:

  1. 想实现一个功能,就是把所有的组件风格函数(@Styles@Extend()所装饰的方法),都写到同一个ets文件中,形成风格库,方便后期统一修改

  2. 在使用export导出时,报错,截图如下

cke_4512.png

需求:

  1. 是否可以对@Styles@Extend()所装饰的方法,使用export 导出

  2. 怎么调用另一个ets文件中的@Styles@Extend()所装饰的方法,是否有这样的方式


更多关于HarmonyOS 鸿蒙Next:是否可以对@Styles和@Extend()所装饰的方法使用export导出的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

22 回复

这个是最最最基础的能力吧,为什么不能支持?我们有一堆app共用的设计规范,请问鸿蒙里面怎么实现共用?

更多关于HarmonyOS 鸿蒙Next:是否可以对@Styles和@Extend()所装饰的方法使用export导出的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我之前试的时候不行,现在的,要测试过才知道。您那测试过了吗,

不行,提issue等回复,

@Extend 不能跨.ets文件使用,那他被设计的目的是啥?🤔

基本信息

  • 姓名: 张三
  • 年龄: 30
  • 职位: 软件工程师

主要技能

  • Java
  • Python
  • C++

请问这个问题解决了吗? 自定义Styles 和 Extend 无法给其他 ets 文件使用的话这个自定义的概念基本上没有太大意义了 没有人会把所有组件都写在一个 ets 文件里面 求官方大佬给个解决方案

我有同样的需求,不过研究了半天,也没找到如何将 @Extend 修饰的方法 export 给其他 ets 文件使用。

Api11目前还是不支持的,网上都说用动态属性AttributeModifier来共享,说实话我是不太喜欢这个方案

请问动态属性可以帮忙给一个资料网站吗?这个我还没了解过,想学一下,看能不能满足我的开发需求,

多谢了哟,

基本信息

<div>
    <p>姓名: 张三</p>
    <p>职业: 软件工程师</p>
    <p>技能: <span style="color: #000;">Python, Java</span></p>
    <img src="" alt="头像">
    <p>个人简介: <span style="color: #000;">拥有5年软件开发经验,熟悉多种编程语言。</span></p>
</div>

插个眼,等更新

同求解决方案,一般UI样式都会写在一个模块里面,如果不能导出那使用场景会受限

  1. 是否可以对 @Styles@Extend() 所装饰的方法,使用 export 导出:

可以使用 @Styles@Extend() 方式:参考代码如下:

@Styles function globalFancy () {
  .width('32%')
  .height('100%')
  .borderRadius(4)
  .align(Alignment.Center)
  .backgroundColor(Color.White)
}

@Extend(Text) function fancy () {
  .fontSize(22)
  .fontWeight(FontWeight.Bold)
}

@Builder KeyboardRow(str: string) {
Text(str)
  .fancy()
  .globalFancy()
  .onClick(() => {
    // 其他数字
    if (this.amount && this.editText.toString().startsWith('0')) {
      // 第一个为零,后一位只能是小数点
      return
    }
    this.amount = this.amount + str
    this.editText = this.amount
    this.onChange(this.editText)
  })
}
  1. @Styles@Extend() 所装饰的方法, 可以存放在公共文件中,可以在另一个 .ets 文件中使用

谢谢大佬的回复。上方描述的是在同一个文件中引用。想请教下怎么在另一个文件中调用呢?是通过import导入还是通过资源引用呢?我试过import不行,会报错。其他引用方式,官网上没有,请多多指点,

开发者您好,目前暂不支持,请关注官网更新。

官方未来有计划支持吗?

API 12依旧不支持``

哈哈,可以试试API13,

一年半了,在新的文档中找到了新的处理方法,给大家贴一下,主要是通过动态属性。

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-style-V5

这个不是太推荐,但是把,鸿蒙不支持这个功能,就感觉他存在的意义并不大,所以还是希望鸿蒙能优化下,

在HarmonyOS鸿蒙Next系统中,关于是否可以对使用@Styles@Extend()装饰的方法使用export导出的问题,答案如下:

HarmonyOS的装饰器(如@Styles@Extend())主要用于类、属性或方法的元数据标注,以提供额外的信息或行为。而export关键字在JavaScript等语言中通常用于模块导出,使得其他模块可以导入并使用这些导出的内容。

在HarmonyOS的上下文中,特别是针对ArkUI(用于构建UI界面的框架),export可能不是直接用于装饰器所标注的方法的。通常,ArkUI的组件和方法导出是通过模块系统或特定的框架机制来实现的,而不是通过传统的export关键字。

@Styles@Extend()装饰器通常用于定义样式和扩展样式,这些样式定义在ArkTS(ArkUI的TypeScript扩展)中,并通过框架的机制应用于组件。这些装饰器标注的内容通常不需要也不支持通过export来导出。

因此,在HarmonyOS鸿蒙Next系统中,不能对使用@Styles@Extend()装饰的方法使用export导出。

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

回到顶部