【鸿蒙开发基础】Harmony OS Next-@Styles修饰符

1.@Styles修饰符是什么?

在Harmony OS Next中,@Styles修饰符用于保存公共属性,公共属性就是给每一个组件都可以设置的属性,比如宽度和高度,或者圆角设置,有些是特殊属性,只能给特定的组件进行设置,比如Text()可以设置的特殊属性有fontStyle和fontWeight。在Row()组件中就无法设置这两个属性,这是Text()所特有的属性。而width和height在Text()和Row()中都可以设置,因为这是通用属性。

@Entry
@Component
struct useStyle {
  @Styles rowStyle(){

.width(80)   //设置公共属性宽度
.height(80)   //设置公共属性高度
   
.fontStyle() //会直接报错,因为@styles中无法设置特殊属性


}
  build() {
Column(){
  Row({space: 20}){
   
  }
}
  }
}

图1

1.1@Styles修饰符通用属性的使用

我们说过,@Styles修饰符可以保存组件样式的通用属性,也就是说,我们可以将它看为一个存储器的命名语法,我们使用@Styles定义一个样式,将它存储在函数中,然后就可以对它进行复用。这里说明一下为什么使用的是函数,因为函数的目的就是重复执行函数内部定义好的语句。当遇到有相同公共样式的组件时,可以直接拿来使用,不需要重复定义,节省开发时间,提升开发效率。

@Entry
@Component
struct useStyle {
//使用@styles修饰符定义公共样式
  @Styles rowStyle(){
.width(80)
    .height(80)
    .borderRadius(8)

//为了使得样式明显,这里使用背景色
 .backgroundColor(Color.Red)

}
  build() {
Row({space:20}){

//需求:定义四个长宽都为80的Row()组件,并且它的圆角为8,那么,我们使用刚刚定义好的rowStyle()一键复用,就可快速实现样式定义的需求
  Row(){

  }
  .rowStyle() //使用@styles定义的公共样式

  Row(){

  }

  .rowStyle()

  Row(){

  }

  .rowStyle()

  Row(){

  }

  .rowStyle()

}
  }
}

图2

以下是实现后的效果图

图3

大家可以看到,一个简单的公共属性复用就实现了。日后在我们开发的过程中,如果需要使用公共属性重复样式的组件,那么就可以考虑使用@styles修饰符完成需求。

1.2@Styles通用事件的使用

通用事件的定义,其实和通用属性类似,就是可以在多个不同类型的组件中都能生效的事件,就是通用事件。需求也类似,在多个组件中都需要使用同一个事件,那我们就用@styles将它封装起来,然后在想使用的组件下输入复用即可。

import { promptAction } from '@kit.ArkUI'
//导入prompt包

@Entry
@Component
struct useStyle {

//定义按钮样式1

  @Styles
  ButtonStyle1(){
    .width(80)
    .height(80)
    .borderRadius(8)

    .backgroundColor(Color.Red)
    .onClick(() => {
      promptAction.showToast({ message: '点击成功' })
    })
  }

//定义按钮样式2

  @Styles
  ButtonStyle2(){
    .width(80)
    .height(80)
    .borderRadius(8)

    .backgroundColor(Color.Green)
    .onClick(() => {
      promptAction.showToast({ message: '点击失败' })
    })
  }

//定义按钮样式3

  @Styles
  ButtonStyle3(){
    .width(80)
    .height(80)
    .borderRadius(8)

    .backgroundColor(Color.Yellow)
    .onClick(() => {
      promptAction.showToast({ message: '重新加载' })
    })
  }

  build() {
Row({space:20}){
  Row(){
Button(){
  Text('点击')

}
.ButtonStyle1()
    Button(){
      Text('点击')
    }
    .ButtonStyle2()

    Button(){
  Text('点击')
    }
    .ButtonStyle3()
  }
.width('100%')
.padding(50)
}
  }
}

图片5

可以看到,这里就已经成功实现了对应的通用事件的功能

1.3@Styles修饰符注意点

@styles修饰的函数不可以进行参数调用和传递,并且它只能使用通用属性和通用事件,只能在当前页面声明和复用生效,不能像子组件那边导出到别的页面中生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值