装饰器 @Styles 和 @Extend

装饰器@Styles提炼的通用样式能跨 .ets 文件用吗? 只能在一个静态页面中通用?

HarmonyOS
2024-10-09 09:47:19
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

请参考:https://blog.csdn.net/qq_53270554/article/details/136795973

使用@Styles装饰器,它可以将多条样式设置提炼成一个方法,直接在组件声明的位置调用。通过@Styles装饰器可以快速定义并复用自定义样式。用于快速定义并复用自定义样式。当前@Styles仅支持通用属性和通用事件,不支持参数。@Styles可以定义在组件内或全局,在全局定义时需在方法名前面添加function关键字,组件内定义时则不需要添加function关键字。

// 全局  
@Styles function functionName() { ... }  
  
// 在组件内  
@Component  
struct FancyUse {  
  @Styles fancy() {  
    .height(100)  
  }  
}

如果想提取公共样式,可以使用attributeModifierattributeModifier当前支持封装一个样式导出供其他组件使用,示例如下:

// CommonAttribute.ets  
export class TitleTextAttribute implements AttributeModifier<TextAttribute> {  
  applyNormalAttribute(instance: TextAttribute): void {  
    instance.backgroundColor(Color.Black)  
    instance.fontColor(Color.White)  
    instance.fontSize(40)  
  }  
}  
  
// Index.ets  
import { TitleTextAttribute } from './CommonAttribute'  
  
@Entry  
@Component  
struct Index {  
  @State modifier: TitleTextAttribute = new TitleTextAttribute()  
  build() {  
    Row() {  
      Column() {  
        Text('Hello World')  
          .attributeModifier(this.modifier)  
      }  
      .width('100%')  
    }  
    .height('100%')  
  }  
}
分享
微博
QQ
微信
回复
2024-10-09 16:21:44
相关问题
@Extend、@Styles、@Builder 区别?
432浏览 • 1回复 待解决
@Style @Extend 是否支持export导出
1272浏览 • 1回复 待解决