【ArkTS】样式复用

如下代码,可以发现每个元素的样式一致,这时就可以将公共样式封装起来

在这里插入图片描述

此时可以使用@Styles修饰符将公共样式进行封装

@Styles修饰符

@Entry
@Component
struct Index{
  build() {
    Column(){
      Text('我是Text')
        .ComStyle()
      Button('我是Button')
        .ComStyle()
      Image('')
        .ComStyle()
    }
    .width('100%')
  }
}

@Styles function ComStyle(){
  .width('80%')
  .height(100)
  .margin({bottom:20})
  .backgroundColor(Color.Pink)
}

不仅可以将样式封装到全局,还可以在组件内部声明,具体封装到哪里需要根据使用场景自行判断,一般多组件公用样式需要写到全局。
注意:组件内部声明时不需要写function关键字

@Entry
@Component
struct Index{
  build() {
    Column(){
      Text('我是Text')
        .ComStyle()
      Button('我是Button')
        .ComStyle()
      Image('')
        .ComStyle()
    }
    .width('100%')
  }
  @Styles ComStyle(){
    .width('80%')
    .height(100)
    .margin({bottom:20})
    .backgroundColor(Color.Pink)
  }
}

@Extend修饰符

尝试封装Text的样式,发现不仅书写时没有代码提示,而且出现以下报错,原因是fontSize并不是通用属性(每个组件都有的样式)。
在这里插入图片描述
此时需要使用另一个装饰器,@Extend,使用方法基本同@Styles,不过@Extend(组件名)需要选择继承哪个组件。

@Extend(Text) function TextStyle(){
    .fontSize(40)
}

特别注意:@Extend只能写在全局!!!在组件内部声明时会报错。

动态样式

使用@Extend修饰符时,可以接收参数做到动态样式。
封装样式

@Extend(Text) function TextStyle(h:number){
  .width('80%')
  .height(h)
  .margin({bottom:20})
  .backgroundColor(Color.Pink)
}

调用

.TextStyle(200)

注意: 只有@Extend修饰符才可以传参!!!使用@Styles传参会报错!!!
在这里插入图片描述

公共样式中也可以封装事件回调

可以把原先的事件回调当作参数传递给样式函数
封装前写法:
在这里插入图片描述
将回调传递给样式函数即可
在这里插入图片描述
在这里插入图片描述
注意:@Extend可以接收参数,@Styles不可以!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田本初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值