第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

相关新闻

ncmdumpGUI快速上手:5分钟把网易云NCM歌曲转成通用格式

ncmdumpGUI快速上手:5分钟把网易云NCM歌曲转成通用格式

ncmdumpGUI快速上手:5分钟把网易云NCM歌曲转成通用格式 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 前阵子朋友找我诉苦:他从网易云…

2026/8/15 10:08:34 阅读更多 →
AI Agent工程化实践:从Skill生命周期管理到AgentLoop闭环

AI Agent工程化实践:从Skill生命周期管理到AgentLoop闭环

1. 从“一次性玩具”到“生产级资产”:为什么我们需要AI Agent的工程化链路?如果你最近也在折腾AI Agent,大概率经历过这样的场景:灵光一现,用LangChain、AutoGen或者某个新框架,花一下午写了个能联网搜索、…

2026/8/15 10:08:34 阅读更多 →
【AgentScope 2.0】07-沙箱(Sandbox)详解

【AgentScope 2.0】07-沙箱(Sandbox)详解

版本基准:本文档基于 AgentScope 2.0 GA(v2.0.0)编写。具体版本号以 Release Notes 为准。 一句话概括 沙箱就是把 AI Agent 关在一个隔离的安全笼子里干活——它可以在笼子里随便折腾(装软件、跑命令、写文件),但不会影响到你的主机系统&am…

2026/8/15 10:08:34 阅读更多 →

最新新闻

具身智能VLA模型实战:从环境搭建到仿真部署全流程解析

具身智能VLA模型实战:从环境搭建到仿真部署全流程解析

1. 从“骂战”到“新剧本”:具身智能的VLA转向到底在解决什么? 如果你最近关注机器人或者AI领域,可能会被“具身智能”、“VLA”、“世界模型”这些词刷屏。半年前,行业里还在争论技术路线,是纯强化学习、纯视觉&#…

2026/8/16 12:04:17 阅读更多 →
深入解析IEEE 754浮点数:从内存表示到精度陷阱与实战应用

深入解析IEEE 754浮点数:从内存表示到精度陷阱与实战应用

1. 浮点数:程序世界里的“科学计数法” 如果你写过C语言,肯定用过 float 和 double 。你可能知道它们用来存小数,比如 3.14 或者 -0.001 。但你想过没有,计算机这个只认识0和1的“直男”,是怎么理解并存储这些…

2026/8/16 12:04:17 阅读更多 →
Keil MDK安装配置全解析:从零搭建稳定嵌入式开发环境

Keil MDK安装配置全解析:从零搭建稳定嵌入式开发环境

如果你在嵌入式开发领域待过一段时间,大概率会听过一个名字:Keil MDK。它几乎是所有基于ARM Cortex-M内核单片机开发的“标配”工具链。但奇怪的是,这个看似基础到不能再基础的“安装”问题,每年依然能困扰成千上万的新手&#xf…

2026/8/16 12:04:17 阅读更多 →
HBuilder X 从入门到精通:前端开发IDE配置、核心功能与性能调优实战

HBuilder X 从入门到精通:前端开发IDE配置、核心功能与性能调优实战

1. 项目概述:为什么HBuilder X是前端开发的“瑞士军刀” 如果你刚接触前端开发,或者是从其他IDE(比如VSCode、WebStorm)转过来,第一次听到HBuilder X这个名字可能会有点陌生。但只要你身处国内的Web开发、小程序、Uni-…

2026/8/16 12:04:17 阅读更多 →
智能体养成指南:如何通过反馈循环与知识库让OpenClaw越用越聪明

智能体养成指南:如何通过反馈循环与知识库让OpenClaw越用越聪明

1. 项目概述:从“工具”到“伙伴”的进化 最近在和一些做自动化流程和智能助手的朋友聊天时,经常听到一个词:“养”。他们不是在讨论宠物,而是在说自己的“OpenClaw”。这个说法很有意思,它精准地捕捉到了现代智能工具…

2026/8/16 12:03:17 阅读更多 →
如何免费获取8大网盘真实下载地址?网盘直链下载助手完整上手指南

如何免费获取8大网盘真实下载地址?网盘直链下载助手完整上手指南

如何免费获取8大网盘真实下载地址?网盘直链下载助手完整上手指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云…

2026/8/16 12:03:17 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →