首页 > 其他分享 >OpenHarmony定义组件重用样式:@Styles装饰器

OpenHarmony定义组件重用样式:@Styles装饰器

时间:2023-09-28 16:34:30浏览次数:63  
标签:Styles OpenHarmony heightValue 定义 样式 组件 全局

OpenHarmony定义组件重用样式:@Styles装饰器

如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,我们推出了可以提炼公共样式进行复用的装饰器@Styles。

@Styles装饰器可以将多条样式设置提炼成一个方法,直接在组件声明的位置调用。通过@Styles装饰器可以快速定义并复用自定义样式。用于快速定义并复用自定义样式。

说明:

从API version 9开始,该装饰器支持在ArkTS卡片中使用。

装饰器使用说明

​ ● 当前@Styles仅支持通用属性通用事件

​ ● @Styles方法不支持参数,反例如下。

// 反例: @Styles不支持参数
@Styles function globalFancy (value: number) {
  .width(value)
}

​ ● @Styles可以定义在组件内或全局,在全局定义时需在方法名前面添加function关键字,组件内定义时则不需要添加function关键字。

// 全局
@Styles function functionName() { ... }

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

​ ● 定义在组件内的@Styles可以通过this访问组件的常量和状态变量,并可以在@Styles里通过事件来改变状态变量的值,示例如下:

@Component
struct FancyUse {
  @State heightValue: number = 100
  @Styles fancy() {
    .height(this.heightValue)
    .backgroundColor(Color.Yellow)
    .onClick(() => {
      this.heightValue = 200
    })
  }
}

​ ● 组件内@Styles的优先级高于全局@Styles。 框架优先找当前组件内的@Styles,如果找不到,则会全局查找。

使用场景

以下示例中演示了组件内@Styles和全局@Styles的用法。

// 定义在全局的@Styles封装的样式
@Styles function globalFancy  () {
  .width(150)
  .height(100)
  .backgroundColor(Color.Pink)
}

@Entry
@Component
struct FancyUse {
  @State heightValue: number = 100
  // 定义在组件内的@Styles封装的样式
  @Styles fancy() {
    .width(200)
    .height(this.heightValue)
    .backgroundColor(Color.Yellow)
    .onClick(() => {
      this.heightValue = 200
    })
  }

  build() {
    Column({ space: 10 }) {
      // 使用全局的@Styles封装的样式
      Text('FancyA')
        .globalFancy ()
        .fontSize(30)
      // 使用组件内的@Styles封装的样式
      Text('FancyB')
        .fancy()
        .fontSize(30)
    }
  }
}

本文由博客一文多发平台 OpenWrite 发布!

标签:Styles,OpenHarmony,heightValue,定义,样式,组件,全局
From: https://blog.51cto.com/OpenHarmony/7640583

相关文章

  • Ant Design Pro版中后台原型模板及Axure rplib元件库组件
    AntDesignPro版中后台原型模板及Axurerplib元件库组件,AntDesign服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。AntDesign是阿里巴巴开源的一套admin框架,是当前非常主流的设计方案。本套素材,使用axureRP软......
  • OpenHarmony AI框架开发指导
    OpenHarmonyAI框架开发指导一、概述1、功能简介AI业务子系统是OpenHarmony提供原生的分布式AI能力的子系统。AI业务子系统提供了统一的AI引擎框架,实现算法能力快速插件化集成。AI引擎框架主要包含插件管理、模块管理和通信管理模块,完成对AI算法能力的生命周期管理和按需......
  • OpenHarmony定义组件重用样式:@Styles装饰器
     如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,我们推出了可以提炼公共样式进行复用的装饰器@Styles。@Styles装饰器可以将多条样式设置提炼成一个方法,直接在组件声明的位置调用。通过@Styl......
  • C# 自己的组件生成Nuget包,组件里的内容(dll等)设置了复制到输出目录,但是引用该Nuget包后
    例如组件A项目中想把以下dll拷贝都输出目录, 已经设置了复制到输出目录。然后项目B通过Nuget包引入了组件A,然后项目B生成路径下并没有这几个opencv的dll。经过组内大佬唐宋元明清2188的研究需要在组件A的项目文件中给每个dll内容连接添加<PackageCopyToOutput>true</Pack......
  • OpenHarmony创新赛|最全赛事奖项信息来啦!
    OpenHarmony创新赛最全赛事奖项信息来啦!不仅有人气作品奖、优秀行业奖、优秀学生奖、创新激励奖参赛即有机会获得多项荣誉激励!快来报名吧!作品提交地址https://atomgit.com/参赛队伍在AtomGit上建仓提交作品资料提交作品时将仓库地址同步给工作人员即可参赛作品需包含说明......
  • k8s 监控(二)监控集群组件和 pod
    原文链接:https://juejin.cn/post/6844903921207492621在上一篇文章中,我们已经在k8s中安装了Prometheus,并且收集了它自身的监控指标。而在这篇文章,我们将收集k8s所有组件和pod的监控指标。在这之前需要先修改下之前监控Prometheus自身使用的一个配置,因为它来源于promet......
  • vue3项目结合ant design vue的upLoad组件实现上传和下载Excel文件
    1.上传文件  1.组件引入    import{ Button, Upload}from'ant-design-vue'  2.代码    <Upload      v-model:file-list="fileList"      name="file"      //限制文件格式      acce......
  • 【转】Vue.js 中的父子组件通信方式
    Vue.js中的父子组件通信方式在Vue.js中,组件是构建应用程序的基本单元。当我们在应用程序中使用组件时,组件之间的通信是非常重要的。在Vue.js中,父子组件通信是最常见的组件通信方式之一。在本文中,我们将讨论Vue.js中的父子组件通信方式,并附上代码实例。 父组件向子组件传......
  • uni-ui组件使用
    由于uni-app独特的easycom技术,可以免引用、注册,直接使用各种符合规则的vue组件。如果你没有创建uni-ui项目模板,也可以在你的工程里,通过uni_modules单独安装需要的某个组件比如找到uni-icon的下载:https://ext.dcloud.net.cn/plugin?name=uni-icons右侧点使用HBuilderX导入......
  • OpenHarmony装饰指定自定义组件:@BuilderParam装饰器
     当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引入了@BuilderParam装饰器,@BuilderParam用来装饰指向@Builder方法的变量,开......