首页 > 其他分享 >学习笔记(三):自定义组件

学习笔记(三):自定义组件

时间:2024-10-25 15:22:28浏览次数:1  
标签:struct 自定义 笔记 mText 组件 message build

自定义组件基于struct实现,

1、struct:

struct + 自定义组件名 + {...}的组合构成自定义组件,不能有继承关系。对于struct的实例化,可以省略new。

2、@Component:

@Component装饰器仅能装饰struct关键字声明的数据结构。struct被@Component装饰后具备组件化的能力,需要实现build方法描述UI,一个struct只能被一个@Component装饰。

3、build()函数:

build()函数用于定义自定义组件的声明式UI描述,自定义组件必须定义build()函数。

4、@Entry:

@Entry装饰的自定义组件将作为UI页面的入口。

5、export:

如果在另外的文件中引用该自定义组件,需要使用export关键字导出,并在使用的页面import该自定义组件。

注意:自定义组件的名称不能和系统组件名称相同

示例:

1、定义一个自定义组件

// 自定义文本组件
// 传入一个字符串,点击组件 字符串发生变化
@Component
export struct mText {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Text(this.message)
        .fontSize(20)
        .fontColor(Color.Red)
        .onClick(()=>{
          this.message = "点击了一下"
        })
    }
  }
}

2、使用自定义组件

import { mText } from './component/mText'

@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        mText({message: '第一个自定义组件' });
        Divider()
        mText({message: '第二个自定义组件'})
      }
      .width('100%')
    }
    .height('100%')
  }
}

 

成员函数/变量

自定义组件的成员函数为私有的,且不建议声明成静态函数

自定义组件的成员变量为私有的,且不建议声明成静态变量。

自定义组件的成员变量本地初始化有些是可选的,有些是必选的。具体是否需要本地初始化,是否需要从父组件通过参数传递初始化子组件的成员变量

自定义组件的参数规定

可以在build方法里创建自定义组件,在创建自定义组件的过程中,根据装饰器的规则来初始化自定义组件的参数。

@Component
export struct mText {
  @State message: string = 'Hello World'

  build() {
    Row() {
      // todo
    }
  }
}

使用:
import { mText } from './component/mText'

mText({message: '第一个自定义组件' });

 

标签:struct,自定义,笔记,mText,组件,message,build
From: https://www.cnblogs.com/xqxacm/p/18502628

相关文章

  • 卢卡斯定理学习笔记
    卢卡斯定理对于非负整数\(a\),\(b\)和质数\(p\),有\[C_{a}^{b}\equivC_{a~mod~p}^{b~mod~p}\cdotC_{\lfloor{a/p}\rfloor}^{\lfloor{b/p}\rfloor}~~\left({mod~p}\right)\]证明引理\[\left({1+x}\right)^{p^{\alpha}}\equiv1+x^{p^{\alpha}}~~\left(......
  • 【vue】15.组件通信的方式(一)props、emits、v-model
    Vue组件通信指的是在Vue.js应用程序中,不同组件之间传递数据和信息的过程。在一个项目中,通常有很多个组件,其中每个组件都是独立的实例,都拥有自己的状态和方法。因此,为了构建复杂的应用,组件之间需要能够互相传递数据和信息,也就是进行组件通信,接下来的几篇内容将对vue组件通信......
  • FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
    ijkplayer是一款由B站研发的移动端国产播放器,它基于FFmpeg3.4版本,同时兼容Android和iOS两大移动操作系统。ijkplayer的源码托管地址为https://github.com/bilibili/ijkplayer,截止2024年9月15日,ijkplayer获得3.24万星标数,以及0.81万个分支数,而这还是ijkplayer停止更新6年之后的数据,......
  • 2024年软件设计师中级(软考中级)详细笔记【7】面向对象技术(上)(分值10+)
    目录前言第7章面向对象技术(上)7.1面向对象基础(3-4分)7.1.1面向对象的基本概念7.1.2面向对象分析(熟记)7.1.3面向对象设计7.1.4面向对象程序设计7.1.5面向对象测试7.2UML(3~4分)7.2.1事务7.2.2关系7.2.2.1多重度7.2.3UML中的的图结语前言在备考软件设......
  • 《代码大全2》读书笔记2
    第五章软件构建的设计中,作者首先阐释了“软件设计”是指构思、发明或设计将计算机软件规范变成可工作的软件的一种方案。设计是一个棘手的问题,人总是在试卷答完之后认为自己的成绩很好,实际上90%的情况是错一部分,不管这个错是大是小,总归是有错的。塔科马海峡桥是一个经典例子,在修建......
  • 最短路算法笔记
    最短路算法最短路算法可大致分为三类:无负权边的单源最短路,有负权边的单源最短路和多源汇最短路dijkstra算法dijkstra算法是求无负权边的单源最短路的常用算法,基于贪心的思想其过程大致为:找到距离已经确定最短路的连通块的最近的点把他加入已经确定最短路的连通块用这个......
  • HarmonyOS:基于Web组件构建网络应用(2)
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/18502207➤如果链接不是为敢技术的博客园地址,则可......
  • CodeQL学习笔记(1)-QL语法(逻辑连接词、量词、聚合词、谓词和类)
    最近在学习CodeQL,对于CodeQL就不介绍了,目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记,根据个人知识库笔记修改整理而来的,分享出来共同学习。个人觉得QL的语法比较反人类,至少与目前主流的这些OOP语言相比,还是有一定难度的。与现在网上的大多数所谓CodeQL教程不同,本系列基于......
  • [NOI 2018] 屠龙勇士 做题笔记
    传送门前言我是唐诗,考场没开这题。导致看都没看,直接考试策略大失误。其实知道了这题是个扩展中国剩余定理之后就很好做了。题意非常奇妙。小D最近在网上发现了一款小游戏。游戏的规则如下:游戏的目标是按照编号\(1\rightarrown\)顺序杀掉\(n\)条巨龙,每条巨龙拥有一......
  • 060 单文件组件
    Vue的单文件组件用.vue结尾单文件组件的格式如下:别忘了template标签是不参与编译的,最后在页面上不显示School组件vue结构快捷键<vapp组件main.jsindex.html准备容器如果想在容器中什么都不写,调整main.js......