首页 > 其他分享 >【鸿蒙开发基础】@Styles修饰符

【鸿蒙开发基础】@Styles修饰符

时间:2024-12-09 11:30:33浏览次数:5  
标签:Styles 鸿蒙 修饰符 组件 80 Row 属性

1.@Styles修饰符是什么?

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

标签:Styles,鸿蒙,修饰符,组件,80,Row,属性
From: https://blog.csdn.net/weixin_74851434/article/details/144339687

相关文章

  • 【鸿蒙开发】ArkTS --“必备”面试题
    系列文章目录【鸿蒙开发】ArkTS--“必备”面试题【鸿蒙开发】ArkTS--“必备”面试题文章目录系列文章目录前言一、什么是类型断言?二、装饰器介绍前言一、什么是类型断言?类型断言允许程序员手动指定一个值的类型。这在需要明确告诉编译器某个值的类型时非常有......
  • 鸿蒙UI开发快速入门 —— part11: 鸿蒙计算器开发实践
    1、前言经过我们前面10章的学习,我们基本上可以开发出一个简单的APP了,为了巩固学习的内容,我们先开发一个计算器APP来连个手(文末有源代码),界面如下:包含基本的计算器运算功能支持一键清空,支持逐个删除数字支持将上次计算的过程保存下来,下次打开app继续;支持清理之前保存......
  • 鸿蒙UI开发快速入门 —— part12: 渲染控制
    1、前言在声明式描述语句中开发者除了使用系统组件外,还可以使用渲染控制语句来辅助UI的构建,这些渲染控制语句包括控制组件是否显示的条件渲染语句,基于数组数据快速生成组件的循环渲染语句。2、条件渲染假设我们存在这样一个应用场景:当我们的界面在满足某种条件时,需要显示一些组......
  • 鸿蒙UI布局实战 —— 个人中心页面开发
    1、前言接下里我们将开启“鸿蒙UI布局系列”的学习,第一站:学习线性布局(Row/Column)+ 弹性布局(Flex)在展开学习前,先上一个实战demo——开发一个个人中心页面,示意图如下:其中需要关注的重点知识有:如何实现图标按钮左对齐;如何实现一个渐变色的圆形头像站位图;“关于我们”选......
  • 鸿蒙UI开发快速入门 —— part10: PersistentStorage与Environment
    1、前言我们在鸿蒙UI开发快速入门——part09:应用级状态管理LocalStorage&AppStorage中已经学习了LocalStorage与AppStorage,但他们都是运行时的内存,在APP退出后所有数据将丢失。如果我们想将一部分状态数据保存下来,让用户在下次进入app时也能恢复之前的现场,那我们就得使用P......
  • 鸿蒙UI开发快速入门 —— part06:组件状态管理之@State装饰器1、说在前面的话 在前五
    这篇文章是关于鸿蒙UI开发中组件状态管理的@State装饰器的介绍。包括引入状态概念构建动态交互界面,@State装饰变量特点,如与组件渲染绑定、私有且特定类型等,以及可观察的变化类型和框架行为。还通过示例介绍了@State变量的初始化流程,最后提及后续将分别介绍其他装饰器。关联......
  • 鸿蒙UI开发快速入门 —— part07:组件状态管理之@Prop/@Link装饰器
    1、前言我们在上一章学习了@State装饰器,@State装饰器的作用范围仅仅在当前组件,接下来,我们讨论如何从父组件中传入参数到子组件,让子组件随着父组件的状态发生变化。本章将要介绍的就是:@Props装饰器。2、@Props装饰器@Prop装饰的变量可以和父组件建立单向的同步关系。@Prop装饰的......
  • 鸿蒙UI开发快速入门 —— part09: 应用级状态管理LocalStorage & AppStorage
    1、说在前面的话前面几个章节中介绍的装饰器(@State、@Props、@Link、@Provide、@Consume、@Observed、@ObjectLink)仅能在页面内,即一个组件树上共享状态变量。如果开发者要实现应用级的,或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。ArkTS根据不同特性,提供了......
  • 鸿蒙UI开发快速入门 —— part05:组件的样式复用
    1、为什么要样式复用?如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,样式的复用就很有必要了。为此,鸿蒙推出了可以提炼公共样式进行复用的装饰器@Styles;2、@Styles装饰器@Styles装饰器可以将......
  • 鸿蒙UI开发快速入门 —— part02: 组件开发
    1.组件基本介绍在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。在进行UI界面开发时,通常不是简单的将系统组件进行组合使用,而是需要考虑代码可复用性、业务逻辑与UI分离,后续版本演进等因素。因此,将UI和部分业务逻辑封装成自定义组件......