鸿蒙UI复用

news2024/11/17 2:25:52

鸿蒙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: string
  subTitle: string
  build() {
    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.coloradmin.cn/o/1643081.html

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

相关文章

CSS浮动(如果想知道CSS有关浮动的知识点,那么只看这一篇就足够了!)

前言:在学习CSS排版的时候,浮动是我们必须要知道的知识点,浮动在设计之初是为了实现文字环绕效果的,但是后来被人们发现浮动在CSS排版中有着很好的实用价值,所以浮动便成为了CSS排版的利器之一。 ✨✨✨这里是秋刀鱼不…

论文辅助笔记:Tempo 之 model.py

0 导入库 import math from dataclasses import dataclass, asdictimport torch import torch.nn as nnfrom src.modules.transformer import Block from src.modules.prompt import Prompt from src.modules.utils import (FlattenHead,PoolingHead,RevIN, )1TEMPOConfig 1.…

LabVIEW鸡蛋品质智能分级系统

LabVIEW鸡蛋品质智能分级系统 随着现代农业技术的飞速发展,精确、高效的农产品质量控制已成为行业的重要需求。其中,鸡蛋作为日常膳食中不可或缺的重要组成部分,其品质直接关系到消费者的健康与满意度。本文设计并实现了一套基于LabVIEW的鸡…

docker私有仓库的registry

简介 Docker私有仓库的Registry是一个服务,主要用于存储、管理和分发Docker镜像。具体来说,Registry的功能包括: 存储镜像:Registry提供一个集中的地方来存储Docker镜像,包括镜像的层次结构和元数据。 版本控制&…

node应用部署运行案例

生产环境: 系统:linux centos 7.9 node版本:v16.14.0 npm版本:8.3.1 node应用程序结构 [rootRainYun-Q7c3pCXM wiki]# dir assets config.yml data LICENSE node_modules nohup.out output.log package.json server wiki.log [rootRainYun-Q7c…

使用MATLAB/Simulink点亮STM32开发板LED灯

使用MATLAB/Simulink点亮STM32开发板LED灯-笔记 一、STM32CubeMX新建工程二、Simulink 新建工程三、MDK导入生成的代码 一、STM32CubeMX新建工程 1. 打开 STM32CubeMX 软件,点击“新建工程”,选择中对应的型号 2. RCC 设置,选择 HSE(外部高…

单链表式并查集

如果用暴力算法的话&#xff0c;那么会直接超时&#xff0c;我们要学会用并查集去记录下一个空闲的位置 #include<bits/stdc.h> using namespace std;const int N 100005;int n; int fa[N]; int a[N];int find(int x) {if (fa[x] x) {return x;}fa[x] find(fa[x]);re…

ChatGPT DALL-E绘图,制作各种表情包,实现穿衣风格的自由切换

DALL-E绘图功能探索&#xff1a; 1、保持人物形象一致&#xff0c;适配更多的表情、动作 2、改变穿衣风格 3、小女孩的不同年龄段展示 4、不同社交平台的个性头像创作 如果不会写代码&#xff0c;可以问GPT。使用地址&#xff1a;我的GPT4 视频&#xff0c;B站会发&#…

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型&#xff1a; 路由器&#xff08;Router&#xff09;&#xff1a;用于连接不同网络并在它们之间转发数据包的设备…

k8s调度原理以及自定义调度器

kube-scheduler 是 kubernetes 的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubernete…

「Node.js」ESModule 与 CommonJS 的 区别

前言 Node.js支持两种模块系统&#xff1a;CommonJS 和 ESModules&#xff08;ESM&#xff09;&#xff0c;它们在语法和功能上有一些不同。 CommonJS (CJS) CommonJS 是 Node.js 最早支持的模块规范&#xff0c;由于它的出现在ES6之前&#xff0c;因此采取的是同步加载模块…

Linux Ubuntu 开机自启动浏览器

终端输入命令&#xff1a;gnome-session-properties 打开启动设置 如果提示&#xff1a;Command ‘gnome-session-properties’ not found, but can be installed with: apt install gnome-startup-applications 则执行&#xff1a;apt install gnome-startup-applications安装…

用pyecharts完成综合案例之全球GDP动态可视化统计图

综合案例之全球GDP 所用csv文档下载链接如下&#xff1a;https://download.csdn.net/download/qq_42707739/12621102?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171488482816800184124883%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fdownloa…

机器学习周报第40周

目录 摘要Abstract一、文献阅读1.1 摘要1.2 论文背景1.3 论文模型1.3.1 模型概述1.3.2 模型细节 1.4 模型精度 二、论文代码2.1 rtdetr.py2.2 backbone模块2.3 AIFI2.4 CCFM 总结 摘要 本周&#xff0c;我深入研读了RT-DETR&#xff08;实时目标检测变换器&#xff09;论文&am…

【数据结构】初识数据结构

引入&#xff1a; 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我…

中仕公考:哪些情况不能考公务员?

1.年龄不符合 主要分两类【一类是未成年人&#xff0c;另一类是超龄人员】 具体来讲:年龄一般为18周岁以上、35周岁以下 (2024国考标准是1987年10月至2005年10月期间出生&#xff09; 对于2024年应届硕士、博士研究生(非在职人员)放宽到40周岁以下(2024国考标准是1982年10月以后…

【Conda】解决使用清华源创建虚拟环境不成功问题

文章目录 问题描述&#xff1a;清华源创建不成功解决步骤1 添加官方源步骤2 删除C:/user/你的用户名/的 .condarc 文件步骤3 再次创建 问题描述&#xff1a;清华源创建不成功 本地配置了清华源&#xff0c;但是在创建虚拟环境时不成功&#xff0c;报错如下。 图片若看不清&…

Docker使用进阶篇

文章目录 1 前言2 使用Docker安装常用镜像示例2.1 Docker安装RabbitMQ2.2 Docker安装Nacos2.3 Docker安装xxl-job&#xff08;推荐该方式构建&#xff09;2.4 Docker安装redis2.5 Docker安装mysql 1 前言 上一篇介绍了Docker的基础概念&#xff0c;带你 入门Docker&#xff0c…