鸿蒙UI复用

鸿蒙UI复用

  • 简介
  • Builder
    • Builder的使用方式一
    • Builder的使用方式二
    • Builder的使用方式三
  • Component
    • 使用Component复用UI

简介

在页面开发过程中,会遇到有UI相似的结构,如果每个UI都单独声明一份,会产生大量冗余代码,不利于阅读。遇到这样的情况,就需要针对相似的结构进行封装,封装后的UI只需要传入参数即可。
在鸿蒙开发中,可以使用Builder 和 Component两种方式来实现。

Builder
Component

Builder

Builder的使用方式一

在一个struct内部创建声明

@Entry
@Component
struct UiTest {build() {Column({space: 10}){this.listItem('标题1','子标题1')this.listItem('标题2','子标题2')this.listItem('标题3','子标题3')}.width('100%').height('100%').justifyContent(FlexAlign.Center)}@Builder listItem(title: string, subTitle: string) {Column(){Row(){Column({space:20}){Text(title).fontSize(20).fontWeight(FontWeight.Bold)Text(subTitle)}Blank()Image($r('app.media.icon_load')).width(30).height(30)}.width('100%')}.width('90%').shadow({radius: 10}).padding(10)}
}

在这里插入图片描述

上述代码中,创建了一个listItem的组件,展示标题和副标题,使用的时候,直接调用this.listItem(‘标题1’,‘子标题1’)即可。

Builder的使用方式二

在一个struct外部创建声明,在使用的时候,直接调用方法名,不再需要使用this.

@Entry
@Component
struct UiTest {build() {Column({space: 10}){listItem('标题1','子标题1')listItem('标题2','子标题2')listItem('标题3','子标题3')}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}
@Builder function listItem(title: string, subTitle: string) {Column(){Row(){Column({space:20}){Text(title).fontSize(20).fontWeight(FontWeight.Bold)Text(subTitle)}Blank()Image($r('app.media.icon_load')).width(30).height(30)}.width('100%')}.width('90%').shadow({radius: 10}).padding(10)
}

Builder的使用方式三

将@Builder的创建和声明放在一个单独的文件夹中,然后记得使用export

@Builder export  function listItem(title: string, subTitle: string) {Column(){Row(){Column({space:20}){Text(title).fontSize(20).fontWeight(FontWeight.Bold)Text(subTitle)}Blank()Image($r('app.media.icon_load')).width(30).height(30)}.width('100%')}.width('90%').shadow({radius: 10}).padding(10)
}

使用的时候,需要导入到当前文件夹

import { listItem } from './listItem'

接下来就直接使用方法名进行调用

Component

使用Component复用UI

Component的创建方式跟Builder创建方式二、创建方式三类似。

在一个单独文件中创建,需要使用export进行导出。

@Component
export struct listItem {title: stringsubTitle: stringbuild() {Column(){Row(){Column({space:20}){Text(this.title).fontSize(20).fontWeight(FontWeight.Bold)Text(this.subTitle)}Blank()Image($r('app.media.icon_load')).width(30).height(30)}.width('100%')}.width('90%').shadow({radius: 10}).padding(10)}
}

在使用的时候,首先需要进行导入

import {listItem} from './listItem'

参数的传递跟Builder有点不同,使用Component的方式传参,需要使用{}将参数包裹起来

import {listItem} from './listItem'
@Entry
@Component
struct UiTest {build() {Column({space: 10}){listItem({title:'标题1',subTitle:'子标题1'})listItem({title:'标题2',subTitle:'子标题2'})listItem({title:'标题3',subTitle:'子标题3'})}.width('100%').height('100%').justifyContent(FlexAlign.Center)}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1412209.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数仓开发:DataX数据采集阶段

结尾有Datax的安装部署教程~ 一、Datax介绍 官网: DataX/introduction.md at master alibaba/DataX GitHub DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 DataX 实现了包括 MySQL、Oracle、Oce…

【Linux 进程】 自定义shell

目录 关于shell 1.打印提示符&&获取用户命令字符​编辑 2.分割字符串 3.检查是否为内建命令 cd命令 export命令 echo命令 1.输出最后一个执行的命令的状态退出码(返回码) 2.输出指定环境变量 4.执行外部命令 关于shell Shell 是计算机操…

JVM笔记4-虚拟机类加载机制

1、概述 Java虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。这个过程称为虚拟机的类加载机制。 2、类加载的时机 一个类型从被加载到内存中开始,到卸载出内存…

游戏辅助 -- 某游戏一键端配置

游戏一键端下载地址及安装视频: https://pan.quark.cn/s/e6a373d94707 ​https://pan.quark.cn/s/ef7ab0c48776 准备工作 Vmware虚拟机软件:用于创建和管理虚拟机。 SecureCRT:一款支持SSH的终端仿真程序,用于远程登陆服务器…

linux的寻找文件

题目 介绍 有一个非常重要的文件 sources.list)但是你忘了 它在哪了,你依稀记得它在 /etc/ 目录下,现在要你 把这个文件找出来,然后设置成自己(shiyanlou 用 户)可以访问,但是其他用户并不能访问。 目标 1.找到 sources.list 文件…

matlab使用教程(62)—matlab中的TeX 标记

您可以使用 TeX 标记向图中添加包含希腊字母和特殊字符的文本。此外,还可以使用 TeX 标记添加上标、下标以及修改文本类型和颜色。默认情况下,MATLAB 支持一部分 TeX 标记。要使用其他特殊字符,如积分和求和符号,可以改用 LaTeX 标…

Java中的ThreadLocal为什么使用弱引用

ThreadLocal中为什么使用弱引用 补个概念: ThreadLocalMap中的key就是Entry,Entry是一个弱引用,关联了当前ThreadLocal对象。需要存储的数据为值。调用set方法要传入两个参数ThreadLocal对象和要存入ThreadLocal对象的数据。 如下图&#xf…

数组邻接表+堆优化版dijkstra+蓝桥杯2022年第十三届决赛真题-出差

文章目录 邻接表数组实现堆优化版dijkstra蓝桥杯2022年第十三届决赛真题-出差 邻接表数组实现 idx是每条边的地址e保存终点的节点值w保存每条边的权值ne[idx]保存边表,idx的下一个顶点的地址h[a]保存顶点表,a是起点,h[a]是终点的地址 int e…

Java 码农失业,有没有其他出路?

本人知乎账号同公众号:老胡聊Java,欢迎留言并咨询 如果是本科学历,30岁失业,真不用慌,别盲目转行,也别盲目继续在小公司之间跳,可以找机会进大中公司。如果是35岁,本文给出的方法还应…

如何使用DEEPL免费翻译PDF

如何使用DEEPL免费翻译PDF 安装DEEPL标题取消PDF限制 安装DEEPL 安装教程比较多,这里不重复。 把英文pdf拖进去,点翻译,在下面的框中有已经翻译完毕的文档。 但是存在两个问题 问题1:这些文档是加密的。 问题2:带有De…

Vue CLI脚手架项目目录和运行流程介绍

目录 一、项目目录介绍 二、运行流程介绍 一、项目目录介绍 二、运行流程介绍 项目在启动时会先运行main.js main.js的核心代码如下 1.导入Vue import Vue from vue 2.导入App.vue import App from ./App.vue 3.实例化Vue,将App.vue渲染到index.html容器中 new Vue({r…

【C语言专题】多组输入类介绍

【C语言小专题】多组输入类介绍 1、多组输入介绍2、多组输入相关练习 1、多组输入介绍 C语言中多组输入是指测试的时候,可能会有多组数据进行测试。接下来我们以两道经典的多组输入的题目来详细说明多组输入的用法。 2、多组输入相关练习 练习1:你是天…

Linux(openEuler、CentOS8)常用的IP修改方式(文本配置工具nmtui+配置文件+nmcli命令)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS类似&#xff0c;可参考本文&#xff09;---- 一、知识点 &#xff08;一&#xff09;文本配置工具nmtui(openEuler已预装) nmtui&#xff08;NetworkManager Text User Interface&#xff09;是一…

基于GWO灰狼优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络&#xff08;CNN&#xff09;在时间序列中的应用 4.2 长短时记忆网络&#xff08;LSTM&#xff09;处理序列依赖关系 4.3 注意力机制&#xff08;Attention&#xff09; 4…

软考 系统架构设计师系列知识点之软件可靠性基础知识(9)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件可靠性基础知识&#xff08;8&#xff09; 所属章节&#xff1a; 第9章. 软件可靠性基础知识 第2节 软件可靠性建模 9.2.2 软件可靠性的建模方法 一个软件可靠性模型通常&#xff08;但不是绝对&#xff09;由以…

Java 三大特性之继承

目录 一、为什么需要继承&#xff1f; 二、继承概念 三、继承的语法 四、子类访问父类成员 五、super关键字 六、子类构造方法的调用顺序 七、继承关系下的初始化 八、继承的三种方式 九、final关键字 十、继承和组合 一、为什么需要继承&#xff1f; 比如狗和猫&a…

IP 地理定位神话与事实

ip地理定位是一项技术&#xff0c;用于通过访问设备的ip地址来获取地理位置信息&#xff0c;例如国家、城市、经纬度等。该技术广泛应用于网站内容自定义、广告定位、网络安全和用户分析等领域。它通过与包含ip地址和地理位置映射的大型数据库进行查询来工作&#xff0c;但在准…

一个适合初学者入门机器人建模、控制和仿真的demo项目,代码已开源!

最近整理了一下自己带新同学做机器人领域入门学习时需要完成的一个工程练习demo&#xff0c;在此分享&#xff0c;可以作为机器人领域的初学者们学习机器人的运动学建模、轨迹规划以及机器人仿真&#xff08;基于CoppeliaSim&#xff09;的入门教程。 demo的代码已开源&#xf…

数仓开发:DIM层数据处理

一、了解DIM层 这个就是数仓开发的分层架构 我们现在是在DIM层&#xff0c;从ods表中数据进行加工处理&#xff0c;导入到dwd层&#xff0c;但是记住我们依然是在DIM层&#xff0c;而非是上面的ODS和DWD层。 二、处理维度表数据 ①先确认hive的配置 -- 开启动态分区方案 -- …