【HarmonyOS NEXT星河版开发学习】小型测试案例15-博客列表

news/2024/9/24 13:17:39/

个人主页→VON

收录专栏→鸿蒙开发小型案例总结​​​​​

基础语法部分会发布于github 和 gitee上面(暂未发布)

前言

该案例主要是ForEach渲染的练习,ForEach可以基于数组的个数,渲染组件个数(简化代码)

在后续的学习中应用肯定也是十分是广泛。该案例难度不大,没有用到太多杂乱的知识点,只是单纯的ForEach的练习。 

构建思路

整体分析

仔细观察不难看出,这是一个列表,并且每一行的格式相同。因此就要考虑ForEach循环渲染,这样的好处就是减少了重复代码的出现,使得代码的可读性更高。 

样式分析 

 

仔细观察每行文字的样式以及他们之间的间隔,思考用什么组件合适一些 。

别忘了下方的边框线

界面讲解

State

 

 由于有大小标题,所以用到了状态管理和数组。接口的定义不要忘记,大小标题统一放到了boke这一数组中。

内容部分 

 

内容部分的定义不必严格按照上述代码进行定义,可以自己适当的根据文本的长度来自行修改 

知识点概述

概念:

鸿蒙星河版的ForEach知识点涵盖了基于数组的循环渲染机制,支持静态和动态数据的高效管理,并提供了优化渲染性能的键值生成规则

鸿蒙星河版中的ForEach是针对开发者在应用开发过程中处理列表数据的核心工具之一。ForEach的设计旨在提供一种基于数组类型数据的循环渲染能力。具体来说,ForEach接口需要与容器组件配合使用,且返回的组件应当是允许包含在ForEach父容器组件中的子组件。例如,如果使用ListItem组件,则要求ForEach的父容器组件必须为List组件。

关于ForEach的具体参数和用法,它接受三个主要参数:数组类型的数据源arr、组件生成函数itemGenerator以及可选的键值生成函数keyGenerator。其中,数据源可以设置为空数组,此时不会创建子组件;组件生成函数负责为数组中的每个元素创建对应的组件;而键值生成函数则为每个数组项生成一个唯一且持久的键值,用于标识对应的组件,确保在数组项更新或重新排序时能够正确地识别和更新相应的组件。

ForEach还提供了一个名为keyGenerator的可选参数,这是一个函数,允许开发者自定义键值的生成规则。若未定义keyGenerator函数,则框架会使用默认的键值生成函数。键值的生成对于ForEach循环渲染过程中组件的管理至关重要,因为它标识了对应的组件实例。当键值变化时,ArkUI框架将视为该数组元素已被替换或修改,并基于新的键值创建一个新的组件。

综上所述,ForEach不仅提供了灵活的数据绑定和组件生成机制,还通过键值生成规则优化了组件的复用和更新,从而提升了大规模数据处理的性能。这些特性使得鸿蒙星河版中ForEach成为构建高效、响应式用户界面的重要工具。

用法:

基本用法

  • ForEach 接受一个数组作为数据源,并对数组中的每个元素执行一次指定的操作。
  • 通常与容器组件如 ListStack 或 Column 配合使用。
  • 在循环体内,你可以访问当前元素和它的索引(如果需要的话)。

属性说明

  • arr: 循环的数据源,通常是一个数组。
  • indexKey: 可选参数,用于指定生成的每个子组件的唯一标识符。
  • itemGenerator: 回调函数,接收当前元素和索引作为参数,并返回要渲染的 UI 组件。

注意事项

  • 确保为每个子组件设置唯一的 key,以提高性能并避免不必要的重绘。
  • 如果数据源发生变化,需要确保更新 UI 时的性能优化。
  • 有时需要结合条件渲染使用,例如使用 if 语句在某些条件下渲染不同的 UI 元素。

 高级用法

  • 动态渲染:根据数据源的变化动态添加或删除 UI 元素。
  • 懒加载:对于大型列表,可以使用懒加载技术仅加载当前屏幕可视范围内的项。
  • 性能优化:利用虚拟 DOM 技术减少不必要的重绘操作。

代码展示

interface BoKe{title:stringcontent:string
}
@Entry
@Component
struct Index {@State boke:BoKe[]=[{title:'Nginx+Tomcat负载均衡、动静分离群集',content:'Nginx(解析静态资源)+Tomcat(解析动态JSP代码)'},{title:'[Git][多人协作][下]详细讲解',content:'[Git][多人协作][下]详细讲解'},{title:'Pycharm中重命名项目之后切换虚拟环境',content:'Pycharm中重命名项目之后切换虚拟环境'},]build() {Column(){ForEach(this.boke,(item:BoKe,index:number)=>{Column({space:5}){Text(item.title).width('100%').fontSize(16)Text(item.content).width('100%').fontColor('#5a566b').fontSize(12).margin({bottom:10})}.margin({bottom:10}).border({width:{bottom:1},color:'#f0f0f2'})})}.padding(20).width('100%')}
}


http://www.ppmy.cn/news/1507403.html

相关文章

加密的PDF文件怎么能够转换为word文档

Word是一种常见的文档格式,被广泛应用于办公室、教育等领域,目前它拥有较为丰富的文档编辑和格式化功能。然而,因为当前很多场景下,大多数资料文件都是以PDF格式存在,因为其具备比较强的稳定性,所以想要去修…

赛盈分销亮相AI科技大会暨亚马逊新增长大会,与企业共话跨境品牌发展新机遇!

八月开端,由知无不言与xmars和钱老师课堂联合主办的2024年AI科技大会暨亚马逊新增长大会在深圳宝安顺利开展,为期2天的跨境峰会吸引了上千位优秀的卖家朋友前来感受一场盛夏大狂欢。在本次跨境峰会里,邀请了多位不同领域的先锋人物&#xff0…

Python爬虫教程(1)— 简介

1.1什么是爬虫 网络爬虫(Web Crawler),又称为网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种自动化脚本或程序,旨在系统地浏览互联网并收集特定信息。爬虫通常用于搜索引擎、数据采集、价格比较网站、社交媒体分析等领域。 主要功能: …

小白零基础学数学建模应用系列(二):基于Python的共享单车系统建模与仿真分析

共享单车系统作为一种绿色环保的出行方式,已成为现代城市公共交通的重要组成部分。本文将使用Python编程语言,并结合modsim库,构建并仿真一个共享单车系统的模型,通过这一过程来展示如何进行系统的建模与分析。 文章目录 一、背景…

SolidityFoundry ERC4626

ERC4626简介 ERC4626 协议是一种用于代币化保险库的标准。 我们经常说 DeFi 是货币乐高,可以通过组合多个协议来创造新的协议; ERC4626 扩展了 ERC20 代币标准,旨在推动收益金库的标准化,它是 DeFi 乐高中的基础,它允…

在Linux中认识pthread库

int *pnullptr; pnullptr; *pnullptr; 指针变量做右值也是变量拥有空间。去承装数据。 *p代表指针所指向的空间,及0号地址,及往虚拟地址的0号地址处写8个字节的数据,全部写为0. (此操作不允许) 进程和线程的关系如…

免费【2024】springboot 甘肃旅游工艺品商城的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

【LeetCode热题100】搜索插入位置

leetcode原地址:https://leetcode.cn/problems/search-insert-position 描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度…