当前位置: 首页 > news >正文

鸿蒙应用开发(2)

鸿蒙应用开发启航计划-CSDN博客

鸿蒙应用开发(1)-CSDN博客

没看过前两篇的,建议请先看上面。

如果你学习完了前两篇,那么你学习这篇文章,就很容易理解了。

这一篇文章将介绍声明式UI的 渲染控制。你需要了解的是,它们渲染的是UI组件。从这个角度,去理解会很简单。

条件渲染

if/else:条件渲染

循坏渲染

ForEach:循环渲染 ,这块知识是围绕3个参数展开的:

整体结构我自己理解可以理解为如此结构:“数据源,组件,键值?”

developer.huawei.com网站的示例如下:

  1. // arr是string类型的数组
  2. // 第一个参数是组件创建函数
  3. // 第二个参数是键值生成函数
  4. ForEach(this.arr, (item: string, index: number) => {Text(item)}, (item: string, index: number) => item + index)

数组类型数据(可简单理解为数据源)第一个参数

arr Array<Object> 必填

keyGenerator  第三个参数

keyGenerator (item: Object, index: number) => string 选填

第三个参数缺省时,默认键值生成规则:(item: Object, index: number) => { return index + '__' + JSON.stringify(item); },你可以把这个过程简单理解为密码加密的过程,然后最终生成了标识密码给每个元素打标记。

首先,你要清楚的不是这个语法的意义,而是为什么需要这个键值,其实就是为了给元素打标记,就是为了复用。如果元素没有变化,键值不变,则不会创建,终极目标是花最低的性能成本去渲染UI组件。

itemGenerator 第二个参数

itemGenerator (item: Object, index: number) => void 必填

组件创建规则(首次渲染和非首次渲染)

首次渲染  ---  创建和渲染

非首次渲染 --- 键值不存在,直接创建;键值存在,直接渲染。

从上面你也应该知道了,构建UI除了传统的系统组件外,还可以借助渲染控制语句辅助UI的创建。

ForEach在开发过程中使用场景,如果是列表场景,分为:

列表数据源不变,列表数据源变化,列表数据源子属性变化(这个说起来有点抽象举个例子,你就可以了解了,比如你发的朋友圈,有人点赞,评论。item整体没有大的变化,只是细微处的子项目有变化。)

需要感悟的地方:细心的读者可能发现了,我上面介绍是ForEach的3个参数,我的介绍顺序是132,而不是123的顺序介绍。这个介绍方式是有意为之的,ForEach的工作顺序,就是132。就是准备了1,然后根据3去生成2,根据2去让组件创建和渲染。

最后,如果数据源数量非常大,建议使用LazyForEach组件。

如果觉得文章有帮到你或者有一些收获,点赞、收藏和评论一下吧。

http://www.lryc.cn/news/516661.html

相关文章:

  • 单片机-LED点阵实验
  • 微服务-Nacos(注册中心)
  • 【Linux知识】shell编程知识科普
  • 小程序学习06——uniapp组件常规引入和easycom引入语法
  • 平安产险安徽分公司携手安徽中医药临床研究中心附属医院 共筑儿童安全防护网
  • C语言练习:求数组的最大值与最小值
  • c++ thread线程join、detach、joinable方法
  • 【算法刷题】leetcode hot 100 哈希篇
  • linux系统(ubuntu,uos等)连接鸿蒙next(mate60)设备
  • 支付宝实名认证
  • GO随想:GO的并发等待
  • kubernetes第五天
  • 扩散模型论文概述(三):Stability AI系列工作【学习笔记】
  • JVM调优,参数在哪里设置的?
  • 2024年最新Stable Diffusion 新手入门教程,安装使用及模型下载
  • Ubuntu 20.04安装gcc
  • IT运维的365天--024 闲置路由器关闭了dhcp,如何知道它的IP是啥
  • kaggle竞赛:纽约出租车行程时间NYC Taxi Trip Duration
  • Freemarker模板进行判空
  • C++ const关键字(八股总结)
  • Linux 清楚历史命令
  • 服务器双网卡NCCL通过交换机通信
  • Redis哨兵(sentinel)
  • 小白学Pytorch
  • ros2笔记-2.5.3 多线程与回调函数
  • 第5章:Go语言错误处理和异常
  • 题库刷题知识点总结
  • GraphRAG:LLM之Graphrag接入milvus
  • adb使用及常用命令
  • omnipeek分析beacon帧