发布时间:2026/8/15 10:09:42
第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/8/15 10:04:35

TypeScript:11、接口

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

2026/8/15 10:04:35

Vue3使用格式化的当前日期

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

2026/8/15 12:19:50

XML批量导入实战:从文件解析到数据库入库的自动化方案

1. 从“手动复制粘贴”到“一键自动化”&#xff1a;批量导入XML文件的场景与价值 如果你曾经处理过几十、上百个XML文件&#xff0c;需要把它们的内容导入到某个系统、数据库或者分析工具里&#xff0c;那你一定体会过那种“复制、粘贴、再复制、再粘贴”的枯燥与低效。我最近…

2026/8/15 12:19:50

Android与iOS崩溃日志获取全攻略:从Logcat到Crashlytics实战

1. 为什么获取崩溃日志是开发者的必修课 如果你是一名移动应用开发者&#xff0c;或者正在负责一个APP的日常维护&#xff0c;那么“应用崩溃”这个词绝对是你最不想听到&#xff0c;却又无法绕开的梦魇。用户一句轻飘飘的“刚才用着用着就闪退了”&#xff0c;背后可能是成百上…

2026/8/15 12:19:50

政务热线:如何打造 7x24 小时不打烊的智能总机?

一、前言&#xff1a;传统政务热线的核心痛点政务热线是连接政府与市民的核心服务窗口&#xff0c;服务体验直接影响群众对政务工作的满意度。但传统人工热线模式&#xff0c;长期存在诸多服务短板&#xff1a;1. 服务时段受限&#xff1a;仅支持工作日人工值守&#xff0c;夜间…

2026/8/15 12:19:50

英语记单词用

tonight 今晚 to ni ght 桂花糖 perfect 完美 healthy 健康的 好肥 he al thy 他 按拉 thy pretty 漂亮的 believe 相信的 truth 真相、事实 处死 他辱骂土豪 talk 说话 study 学习 四大帝梳头第一 because 因为 被烤死 eighteen 十八 爱听 sleep 睡觉 explain 解释 恶习蓬莱牛…

2026/8/15 12:19:50

VCU开发学习

安全冗余设计策略开关信号冗余设计&#xff08;制动开关&#xff09;当两路信号不一致时是正常的&#xff0c;两路信号一致时出现故障模拟信号冗余设计&#xff08;加速踏板&#xff09;双通道设计&#xff0c;2通道是一通道的一半

2026/8/15 9:46:30

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片&#xff1a;Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/15 7:22:41

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map&#xff0c;七种策略与六类陷阱引言&#xff1a;128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token&#xff08;≈ 0.5MB ~ 4MB 文本&#xff09;&#xff0c;但 LLM 想要处理的真实数据规模远远超过这个量级&#xff1a;真实…

2026/8/15 0:04:00

AI 电动婴儿车智能功率 辅助控制、电源管理的完整选型方案

2026年随着 AI 技术在电动孕婴童用品中的深度渗透&#xff08;如智能避障、自适应速度控制、能量回收&#xff09;&#xff0c;电动婴儿车对功率器件提出更高要求&#xff1a;高效率、小型化、低功耗、高可靠性。微碧半导体&#xff08;VBsemi&#xff09;基于 Trench 及 SGT 工…

2026/8/15 0:04:00

论文AIGC检测不达标完整教程!低门槛用5款工具逐步复检!

论文提交前自己先查一遍AI率&#xff0c;是2026年毕业生的常规动作。学校要求论文AI率低于30%&#xff0c;乃至于20%才能答辩… 很多同学发现一个尴尬的事情&#xff1a;同一篇论文&#xff0c;知网查出来AI率35%&#xff0c;维普查可能是48%&#xff0c;大雅、朱雀又是另外的数…

2026/8/15 9:46:39

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/15 4:56:16

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/15 9:46:30

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具&#xff0c;覆盖选题构思、文献整理、内容生成、格式排版等核心场景&#xff0c;真正帮你高效搞定论文难题。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首…