第5章 ArkUI(下)

发布时间:2026/10/3 17:18:35

第5章 ArkUI(下) 在UI开发中,开发者经常会遇到编写相似或重复代码的情况,以确保整体外观和样式的一致性。ArkUI提供了渲染语句、组件的导出和导入、组件代码复用等功能,可以帮助开发者减少编写相似或重复代码的情况,同时确保整体外观和样式的一致性。本章将对ArkUI进阶知识进行详细讲解。5.1 渲染语句5.1.1 条件渲染语句在开发中,有时需要根据某个条件决定是否渲染某个组件,此时可以使用条件渲染语句。条件渲染语句包括if语句、if…else语句、if…else if…else语句。下面以if语句为例演示条件渲染语句的使用方法。@Entry @Component struct IfPage { @State showImg: boolean = true; build() { Row() { Column() { Checkbox() .select(this.showImg) .onChange(isON = { this.showImg = isON; }) if (this.showImg) { Image($r('app.media.coin')) .width(150) .height(150) } } .width('100%') } .height('100%') } }5.1.2 循环渲染语句在开发中,有时需要渲染一批相同的组件。对于这样的需求,可以通过循环渲染语句来实现,从而减少重复的组件代码。循环渲染语句主要是通过ForEach()函数实现的。使用ForEach()函数可以基于数组进行循环渲染,在渲染过程中,系统会为每个数组元素生成一个唯一且持久的键,用于标识对应的组件。当这个键发生变化时,ArkUI将视为该数组元素已被替换或修改,并会基于新的键创建一个新的组件。ForEach()函数的语法格式如下。 ForEach( arr: Array, itemGenerator: (item: 类型, index?: number) = void, keyGenerator?: (item: 类型, index?: number): string = string )参数arr表示数据源,它是一个数组。 参数itemGenerator表示组件生成函数。 参数keyGenerator表示键生成函数。 在这两个函数中,item参数表示数组中元素的值,index参数表示数组中元素的索引。itemGenerator表示的函数会为数组中的每个元素创建组件,该函数中可以包含条件渲染语句,也可以在条件渲染语句中使用ForEach()函数。在用keyGenerator参数表示的函数中可以自定义键的生成规则。如果开发者没有定义keyGenerator表示的函数,则ArkUI会使用默认的键生成函数,相当于如下代码。(item: 类型, index: number) = index + '__' + JSON.stringify(item);下面通过代码演示ForEach()函数的使用方法。interface GoodsItem { id: number; goods_name: string; goods_img: Resource; goods_price: number; goods_count: number; } @Entry @Component struct ForEachPage { @State list: GoodsItem[] = [{ id: 1, goods_name: 'Vue.js前端开发实战(第2版)', goods_img: $r('app.media.vue'), goods_price: 49.8, goods_count: 1, }, { id: 2, goods_name: '软件测试(第2版)', goods_img: $r('app.media.test'), goods_price: 49.8, goods_count: 1, }, { id: 3, goods_name: 'PHP+MySQL动态网站开发', goods_img: $r('app.media.mysql'), goods_price: 49.8, goods_count: 1, }, { id: 4, goods_name: 'Python数据预处理', goods_img: $r('app.media.python'), goods_price: 39.8, goods_count: 1, }]; build() { List() { ForEach(this.list, (item: GoodsItem) = { ListItem() { Row({ space: 10 }) { Image(item.goods_img) .borderRadius(8) .width(120) .height(200) Column() { Text(item.goods_name) .fontWeight(FontWeight.Bold) Text('¥' + item.goods_price.toString() ) .fontColor(Color.Red) .fontWeight(FontWeight.Bold) } .padding({ top: 5, bottom: 5 }) .alignItems(HorizontalAlign.Start) .justifyContent(FlexAlign.SpaceBetween) .height(200) .layoutWeight(1) } nb
延伸阅读

更多相关文章

2026/10/3 11:25:26

TypeScript:11、接口

接口 接口用于描述对象或类应该具备的结构。它只规定属性和方法的形状,不负责创建实例,也不提供具体实现。 一、接口的基本语法 interface Person {name: string;sayHello(): void; }这个接口要求对象必须包含: name 字符串属性。sayHello 方…

2026/10/1 21:43:42

Vue3使用格式化的当前日期

在Vue 3中&#xff0c;初始化一个变量today为当前日期&#xff0c;并且格式化为yyyy-mm-dd格式&#xff0c;可以通过多种方式实现。以下是几种常见的方法&#xff1a; 格式化当前日期 方法1&#xff1a;使用JavaScript的Date对象和模板字符串 <script setup> import { re…

2026/10/3 17:15:42

嵌入式C语言面试实战:从指针内存到通信协议解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 17:15:42

车企数字化转型核心:从数据中台到全链路系统规划

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 17:15:41

Ubuntu 20.04 OpenSSH升级实战:从8.2p1到9.x的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 8:16:46

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/2 18:20:53

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集&#xff1a;Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 15:02:19

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 0:04:31

国内大学生必备的AI写作辅助软件是哪款?

国内高校学生在论文写作过程中&#xff0c;越来越依赖AI辅助工具提升效率&#xff0c;主流方案以本土化全流程工具为核心&#xff0c;结合通用大模型与专业插件&#xff0c;覆盖选题构思、框架搭建、初稿撰写、查重降重、格式调整等关键环节&#xff0c;本文将深入解析当前主流…

2026/10/3 0:04:31

Codex接入Jev模型完整指南:配置方法、本地部署与踩坑排查

最近不少人在讨论 Codex 搭配 Jev 这套玩法&#xff0c;我一开始没太当回事&#xff0c;直到自己把 Jev 接进 Codex跑了几轮编码任务之后&#xff0c;才明白那些说“直接起飞”的人是怎么想的。Codex 作为工具本身已经够能打了&#xff0c;但模型固定、上下文策略固定&#xff…

2026/10/3 0:04:31

GitHub 热门: NVIDIA/Model-Optimizer

&#x1f44b; Hi&#xff0c;我擅长 AI 大模型应用落地、意识解码与 AI 开发工具链 。 &#x1f4a1; 创业路上&#xff0c;用技术换时间&#xff0c;一起把 AI 变成生产力 &#x1f680; >GitHub 热门: NVIDIA/Model-Optimizer 凌晨两点&#xff0c;你刚把跑通了的 Qwen3.…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑