首页 > 其他分享 >鸿蒙NEXT开发教程:浅谈@ComponentV2装饰器

鸿蒙NEXT开发教程:浅谈@ComponentV2装饰器

时间:2024-11-16 16:31:35浏览次数:1  
标签:浅谈 text Param NEXT ComponentV2 组件 Local 装饰 string

听说今天的广州车展上有一部分人已经看到华为汽车的最后一“界”,尊界超豪华大轿车,应该很快就要正式亮相,可以期待一波。

在api12之后,鸿蒙系统推出一个V2版本的状态管理装饰器,不过目前还在开发试用状态,幽蓝君仔细研究了一下,今天跟大家做一个简单的介绍。

幽蓝君对V2版本装饰器的总结是,它是为了修补目前版本状态管理的不足,新增了一些功能更加精细的状态变量装饰器,等到开发试用完善之后应该会和当前装饰器合并到一起,不再使用V2区分。

下面跟大家详细介绍一下@ComponentV2装饰器。

@ComponentV2和@Component一样,都用于装饰自定义组件,但是@ComponentV2内部只能使用全新的状态变量装饰器,比如@Local、@param、@Once、@Event、@Provider、@Consumer等。这几个装饰器有什么作用呢,请往下看:

@Local:组件内部状态

@Local的作用和现在的@State类似,但是鸿蒙研发团队认为@State装饰器可以从外部初始化是一个缺陷,所以@Local是一个组件内部状态,它不接受从外部进行的初始化,下面我写了一段demo,让我们来感受一下:

@ComponentV2 struct TextV2{
  @Local text:string = 'v2'
  build() {
    Text(this.text)
      .fontColor(Color.Brown)
      .fontSize(20)
  }
}


@Component struct TextV1{
  @State text:string = 'v1'
  build() {
    Text(this.text)
      .fontColor(Color.Grey)
      .fontSize(20)
  }
}

 

图片

 

可以看到,当我向子组件传值时,@Local修饰符是不接受的。

@Param:组件外部输入

和@Local相反,@Param表示组件从外部传入的状态,它是为了父子组件之间的数据能够进行同步。但是它是不支持组件内部进行修改的:

 

图片

 

@Once:初始化同步一次

这个装饰器看单词就比较好理解,只能修改一次,不过它的局限性比较大,必须和@Param配合使用,不能单独使用,它是为了实现仅从外部初始化一次、不接受后续同步变化的能力。

@Param @Once text:string = 'v2'

 

@Event组件输出

@Event也和@Param有关系,因为@Param修饰的变量无法从内部修改,但是有时它又需要修改,那怎么办呢,@Event装饰的事件负责告诉父组件,再由父组件进行修改。好像有点多此一举:

@ComponentV2 struct TextV2{
  @Param text:string = 'v2'
  @Event changeText: (x: string) => void = (x: string) => {};


  build() {
    Column(){
      Text(this.text)
        .fontColor(Color.Brown)
        .fontSize(20)
        .onClick(()=>{
          this.changeText('hahaha')
        })
    }
  }

 

@Provider装饰器和@Consumer装饰器:跨组件层级双向同步

我们在V1版本里都使用过@Provide和@Consume,是用来跨组件层级双向传递的装饰器,这两个长的很像,功能也类似,不过有一些细小的区别,直接跟大家截个图吧:

 

图片

 

@Monitor:监听

我们之前使用@Watch来监听变量的变化,不过@Watch无法实现对对象、数组中某一单个属性或数组项变化的监听,且无法获取变化之前的值。而@Monitor可以:

@Local text:string = 'v2'
  //监听text
  @Monitor('text')
  onStrChange(monitor: IMonitor){
    monitor.dirty.forEach((path:string)=>{
      console.log('修改前:',monitor.value(path)?.before)
      console.log('修改后:',monitor.value(path)?.now
      )
    })
  }

@Computed:计算属性

@Computed用来装饰getter方法,并且会随着被计算的值的变化而变化,并且只会计算一次,另外,@Computed的计算性能更佳。文字比较难理解,举个例子:

@Local a:number = 10
@Local b:number = 20


@Computed
get c(){
  return this.a + this.b
}

标签:浅谈,text,Param,NEXT,ComponentV2,组件,Local,装饰,string
From: https://www.cnblogs.com/youlanjihua/p/18549446

相关文章

  • HarmonyOS Next分布式管理核心功能解析:网络服务和数据传输的实现二
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在HarmonyOSNext的分布式管理体系中,网络......
  • 构建基于 HarmonyOS Next 的分布式工业监控系统
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。工业自动化和智能制造的发展,正推动着......
  • HarmonyOS Next 实战:构建智能家居分布式协同系统
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。随着智能家居的迅速发展,用户对智能设......
  • 基于 HarmonyOS Next 的跨设备分布式文件传输系统
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在智能设备的跨设备应用中,文件传输需......
  • 鸿蒙NEXT自定义组件:太极Loading
     【引言】(完整代码在最后面)本文将介绍如何在鸿蒙NEXT中创建一个自定义的“太极Loading”组件,为你的应用增添独特的视觉效果。【环境准备】电脑系统:windows10开发工具:DevEcoStudioNEXTBeta1BuildVersion:5.0.3.806工程版本:API12真机:mate60pro语言:ArkTS、ArkUI......
  • 浅谈线段树分治
    大体思想线段树分治是一种用于解决区间操作和时间点查询的算法。它的主要思想是以时间为下标建立线段树,将在某一时间段内生效的操作记录在线段树上,然后对于某一时间点的查询,可以直接从线段树上得到结果。线段树是一种容易维护区间的数据结构,它通过不断以中点分治区间,形成了\(log......
  • .NET Core 反射底层原理浅谈
    简介反射,反射,程序员的快乐。前期绑定与后期绑定在.NET中,前期绑定(EarlyBinding)是指在编译时就确定了对象的类型和方法,而后期绑定(LateBinding)或动态绑定是在运行时确定对象的类型和方法。前置知识:C#类型系统结构C#作为C++++,在类型系统上沿用C++的类型系统前期绑定在代......
  • 分布式管理进阶:HarmonyOS Next 中的设备信息查询与状态监听
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在探索HarmonyOSNext的分布式管理服务时......
  • 初识 HarmonyOS Next 的分布式管理:设备发现与认证
    初识HarmonyOSNext的分布式管理:设备发现与认证本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及......
  • HarmonyOS Next分布式管理核心功能解析:网络服务和数据传输的实现一
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在HarmonyOSNext的分布式管理体系中,网络......