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

佛山市住房和城乡建设管理局网站徐州关键词排名优化

佛山市住房和城乡建设管理局网站,徐州关键词排名优化,店铺设计网站推荐,青岛无间设计公司网站本文转载自《#2023盲盒码# OpenHarmony组件复用示例》#xff0c;作者zhushangyuan_ 摘要#xff1a;在开发应用时#xff0c;有些场景下的自定义组件具有相同的组件布局结构#xff0c;仅有状态变量等承载数据的差异。这样的组件缓存起来#xff0c;需要使用到该组件时直… 本文转载自《#2023盲盒码# OpenHarmony组件复用示例》作者zhushangyuan_ 摘要在开发应用时有些场景下的自定义组件具有相同的组件布局结构仅有状态变量等承载数据的差异。这样的组件缓存起来需要使用到该组件时直接复用减少了创建和渲染的时间可以提高帧率和用户性能体验。本文会介绍开发OpenHarmony应用时如何使用组件复用能力。关键字OpenHarmony HarmonyOS 鸿蒙 ForEach LazyForEach 循环渲染 概述 在开发应用时有些场景下的自定义组件具有相同的组件布局结构仅有状态变量等承载数据的差异。这样的组件缓存起来需要使用到该组件时直接复用 减少重复创建和渲染的时间从而提高应用页面的加载速度和响应速度。在OpenHarmony应用开发时自定义组件被Reusable装饰器修饰时表示该自定义组件可以复用。在父自定义组件下创建的可复用组件从组件树上移除后会被加入父自定义组件的可复用节点缓存里。 在父自定义组件再次创建可复用组件时会通过更新可复用组件的方式从缓存快速创建可复用组件。这就是OpenHarmony的组件复用机制。本文会介绍开发OpenHarmony应用时如何使用组件复用能力。 环境准备 准备一个DevEco Studio使用真机或者Simulator模拟器来验证。更多关于DevEco Studio的信息请访问HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者。 组件复用接口 OpenHarmony SDK文件ets\component\common.d.ts的自定义组件的生命周期里定义了aboutToReuse方法如下 自定义组件的生命周期回调函数用于通知用户该自定义组件的生命周期这些回调函数是私有的在运行时由开发框架在特定的时间进行调用不能从应用程序中手动调用这些回调函数。 当一个可复用的自定义组件从复用缓存中重新加入到节点树时触发aboutToReuse生命周期回调并将组件的构造参数传递给aboutToReuse。aboutToReuse函数的参数是字典类型的键为组件的构造参数变量名称值为组件的构造参数实际取值。 该声明周期函数从API version 10开始该接口支持在ArkTS卡片中使用。 declare class CustomComponent extends CommonAttribute { ....../*** aboutToReuse Method** param { { [key: string]: unknown } } params - Custom component init params.* syscap SystemCapability.ArkUI.ArkUI.Full* crossplatform* since 10*/aboutToReuse?(params: { [key: string]: unknown }): void; ...... }开发实践 我们看下组件复用的实际使用案例。示例中会创建一个图片列表页面使用懒加载LazyForEach以及组件复用能力。 创建数据源 首先创建了一个业务对象类MyImage包含一个image_id图片编号和image_path图片路径。根据实际业务的不同会有差异此例仅用于演示。 然后创建一个数据源类ImageListDataSource并构造一个列表对象imageList。 可以看到构造了10000条记录。 在工程的/resources/images文件夹下有50张图片。 每条记录中包含一个编号从0到9999。 记录中还一个一个图片路径不同的记录编号不会重复图片路径可能重复。 至此数据源类创建完毕。 export class MyImage {image_id: stringimage_path: stringconstructor(image_id: string, image_path: string) {this.image_id  image_idthis.image_path  image_path} }export class ImageListDataSource extends BasicDataSource {private imageList: MyImage[] []public constructor() {super()for (let i  0;i  10000; i) {let imageStr  /resources/images/photo${(i % 50).toString()}.jpgthis.imageList.push(new MyImage(i.toString(), imageStr))}}public totalCount(): number {return this.imageList.length}public getData(index: number): MyImage {return this.imageList[index]} ...... }创建复用组件 创建好数据源类后我们再看下可复用组件的代码。 使用装饰器Reusable来标记一个组件是否属于可复用组件。 我们创建的可复用组件有一个状态变量State item构造该自定义组件时父组件会给子母件传递构造数据。 还需要实现组件复用声明周期回调函数aboutToReuse在这个函数里通过params把构造数据传递给可复用组件。 我们在函数aboutToReus里再单独加个一个打印函数用于在组件复用时输出一条日志记录。 需要注意的是正常情况下aboutToReuse函数里除了构造参数传值不要做任何耗时操作。 在可复用组件的build()方法里为每条记录渲染一行包含图片、图片编号和图片路径。 图片编号可以识别渲染的是哪一条数据用于验证组件复用了正确的组件。 Reusable Component struct MyListItem {State item: MyImage  new MyImage(, )aboutToReuse(params) {this.item  params.itemLogger.info(TAG, aboutToReuse-,item this.item.toString())}build() {Row({ space: 10 }) {Image(this.item.image_path).width(50).height(50).borderRadius(5).autoResize(false).syncLoad(true)Blank()Text(this.item.image_id).fontColor(Color.Black).fontSize(15)Blank()Text(this.item.image_path).fontColor(Color.Black).fontSize(15)}} }入口组件 在我们的Ent */-·- 件里在List父组件里可以调用可复用组件MyListItem。通过{ item: item }完成父子组件参数传递。 reuseId参数是可选的用于标记可复用组件的复用类型。属性参数的注释如下 /*** Reuse id is used for identify the reuse type for each custom node.* * param { string } id - The id for reusable custom node.* syscap SystemCapability.ArkUI.ArkUI.Full* crossplatform* since 10*/reuseId(id: string)入口组件的示例代码如下 Entry Component struct Index {private data: ImageListDataSource  new ImageListDataSource()build() {List({ space: 3 }) {LazyForEach(this.data, (item: MyImage) {ListItem() {MyListItem({ item: item })// .reuseId(item.image_id)}}, item  item)}} }注意事项 可以访问站点developtools_ace_ets2bundle: -- - Gitee.com查看组件复用的一些示例这些是用于测试的例子。 Reusable之前的装饰器的名称为Recycle旧名称不使用了。ForEach渲染控制具有全展开的特性不能触发组件复用。 总结 本文介绍了开发OpenHarmony应用时如何使用组件复用能力提供代码示例期望帮助关注组件复用的开发者朋友们。 如有任何问题欢迎交流讨论。 参考资料 [1] Sample聊天实例应用 [2] 自定义组件的生命周期 [3] 组件复用场景 [4] 组件复用一些示例
http://www.yutouwan.com/news/2752/

相关文章:

  • 网站开发安全性百度关键词优化是什么意思
  • 网站建设需要使用哪些设备百度网页版 入口
  • 秦皇岛陵县网站建设设计培训培训网站建设
  • 公众号网站开发贵阳花溪建设村镇银行官方网站
  • 安徽省同济建设集团网站网络营销推广方案案例视频
  • 尤溪县建设局网站东莞seo建站费用
  • 舟山高端网站建设上海天华建筑设计有限公司地址
  • 门户网站建设模式包括网站群和电子商务网站推广的界定
  • 做720全景好的网站wordpress的文要登录才能看
  • 移动 开发 网站建设建设银行网站图片大全
  • 宽屏网站模板企业源码做网站的具体内容
  • 企业建站模板无锡本地做网站
  • python 做办公网站江苏企业网站建设
  • 外贸网站如何seo推广小型静态网站是什么原因
  • 公司做零申报在哪个网站上秦皇岛市建设局
  • 非经营备案网站能贴放广告么自适应网站建设特点
  • 伊春住房和城乡建设网站深圳微信小程序制作公司
  • 公司做网站需要什么手续吗区网站开发语言
  • 模板网站怎么做301电商网站有哪些功能模块
  • 平邑网站建设做文案应该关注的网站推荐
  • 四川平台网站建设方案朝阳区住房和城乡建设部网站
  • 网站的策划方案门户网站备案
  • 买域名自己做网站wordpress 登入
  • 南宁微信网站建设怎样进入网站的后台
  • 企业网站优化分为哪两个方向新闻 今天
  • 资源网站免费的海南企业网站建设
  • 镇江网站设计多少钱校园局域网站建设费用
  • 上海市住房和城乡建设厅网站查询友情链接交易平台
  • 网站 售后服务wordpress分享型主题模板下载
  • 潍坊建立企业网站公司app推广注册从哪里接单