harmonyOS 自定义组件基础演示讲解

news/2024/7/21 12:09:01 标签: harmonyos, 鸿蒙, 华为

上文 HarmonyOS组件属性控制 链式编程格式推荐我们讲了一些系统组件 可以传入一些事件和参数 来达到一些不同的效果

其实 我们还可以用自己写的组件
那么 组件这么写?
其实 我们的 page 内部结果 就是一个组件
在这里插入图片描述
harmonyOS的概念 万物皆组件
那么 我们就可以在他下面加一个
在这里插入图片描述
可以看到 这样也是没有问题的

但最上面 有一个 @Entry装饰器
整个文件中只能有一个组件被 它修饰 修饰了@Entry就是这个文件的入口 每次进入页面 都是展示出 @Entry修饰的组件内容

我们第二个组件 目前这个写法是有问题的 build组件下必须有 且只能有一个组件 作为组件的根元素组件

我们可以将page代码改写如下

@Entry
@Component
struct Index {

  build() {
    Row() {
      Column() {
        imist();
        imist();
        imist();
      }
      .width('100%')
    }
    .height('100%')
  }
}

@Component
struct imist {

  build() {
    Row() {
      Image($r('app.media.img'))
        .width(20)
        .height(20)
        .margin(15)
      Text("你好")
        .fontColor(Color.White)
    }
    .backgroundColor(Color.Blue)
    .borderRadius(25)
    .margin({
      top: 15
    })
    .width("80%")
  }
}

这里 我们在page主体下面又写了一个组件 内容大概是 Row声明一行 然后 这一行中 有一个 image图片组件 然后 图片的高宽都设为20 给 15的边距

然后 Text文本组件 内容你好 然后 给他设置了个字体颜色 Color中的白色White

然后 Row 这一行样式设置为 宽度百分之 80 边距 只设上边距 15 然后 背景颜色设为Blue 蓝色 圆角效果 25

然后 我们页面主体 @Entry 修饰的入口组件 用了三个我们写的 imist 组件
运行结果如下
在这里插入图片描述

但是这样 如果我们想文本不同呢?
自定义组件 是可以传递参数的哦

我们将代码改成这样

@Entry
@Component
struct Index {

  build() {
    Row() {
      Column() {
        imist({content: "第一个组件接到值了"});
        imist({content: "第二个组件也接到啦"});
        imist({content: "我这边也OK"});
      }
      .width('100%')
    }
    .height('100%')
  }
}

@Component
struct imist {
  private content:string = "青山不改,绿水长流";

  build() {
    Row() {
      Image($r('app.media.img'))
        .width(20)
        .height(20)
        .margin(15)
      Text(this.content)
        .fontColor(Color.White)
    }
    .backgroundColor(Color.Blue)
    .borderRadius(25)
    .margin({
      top: 15
    })
    .width("80%")
  }
}

我们这里父组件 传递了一个对象 里面有一个字段 content 对应的都是一个字符串内容

然后子组件中声明这个私有参数 content 声明为 string 字符串类型 然后 给了个默认值 “青山不改,绿水长流”
然后 我们的 Text组件用了这个变量

运行结果如下
在这里插入图片描述
可以看到 外面传递值是生效了的


http://www.niftyadmin.cn/n/5276118.html

相关文章

极坐标下的牛拉法潮流计算14节点MATLAB程序

微❤关注“电气仔推送”获得资料(专享优惠) 潮流计算: 潮流计算是根据给定的电网结构、参数和发电机、负荷等元件的运行条件,确定电力系统各部分稳态运行状态参数的计算。通常给定的运行条件有系统中各电源和负荷点的功率、枢纽…

借助dayjs,把各种类型的日期转换成“YYYY-MM-DD“格式

记得先 npm install datajs <template><div class"home"></div> </template> <script lang"ts" setup> import { reactive, ref } from "vue";import dayjs from "dayjs"; import customParseFormat f…

竞赛保研 Yolov安全帽佩戴检测 危险区域进入检测 - 深度学习 opencv

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; Yolov安全帽佩戴检测 危险区域进入检测 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&am…

74.搜索二维矩阵

题目 法1&#xff1a;二分搜索 剑指原题 class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m matrix.length, n matrix[0].length;int i 0, j n - 1;while (i < m && j > 0) {if (matrix[i][j] target) {return true;} el…

VS+Qt 打包Python文件

书接上回&#xff0c;调用C调用python&#xff0c;下面来谈谈随exe文件打包。 先说下环境vs2019Qt5.12.11python3.8&#xff0c;这里需要注意如果你要适配Win7的系统&#xff0c;python最好是9以下&#xff0c;以上不兼容&#xff0c;也没时间找方法&#xff0c;找到评论说下 如…

sql_lab之sqli中的post注入

Post注入 用burpsuit抓包去做 Post第一关&#xff1a;&#xff08;gxa5&#xff09; 1.判断是否存在注入 username1or 11 #&password123&submit%E7%99%BB%E5%BD%95 有回显 username1or 12 #&password123&submit%E7%99%BB%E5%BD%95 没有回显 则证明存在sq…

详解—C++ [异常]

目录 一、C语言传统的处理错误的方式 二、C异常概念 三、异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3异常安全 3.4 异常规范 四、自定义异常体系 五、C标准库的异常体系 六、异常的优缺点 6.1、C异常的优点&#xff1a; 6.2、C异常的缺点&#xff1a;…

自动化测试工具选择指南

随着软件开发周期的不断缩短和需求的增加&#xff0c;自动化测试变得愈发重要。然而&#xff0c;选择适合项目的自动化测试工具并非易事。以下是一些指导原则&#xff0c;帮助你在众多自动化测试工具中做出明智的选择。 1. 项目需求分析 在选择自动化测试工具之前&#xff0c;首…