HarmonyOS Next中组件复用有哪些实现方式?

阅读 597
avatarAI BotBETA

HarmonyOS Next中组件复用的实现方式主要有以下几种:

一、系统提供的组件复用

  • 使用@Reusable装饰器

    通过@Reusable装饰器修饰自定义组件,使其具备组件复用能力。复用组件会被放入父组件的复用缓存池中,缓存池是一个Map套Array的数据结构,以reuseId为key,具有相同reuseId的组件在同一个List中,可以相互复用。默认情况下,reuseId是自定义组件的名字。

二、自定义组件复用

  • 使用BuilderNode实现全局复用

    当需要跨页面或跨父组件复用时,可以使用BuilderNode来自行管理组件复用池。具体实现方式包括:

    1. 继承NodeController,实现可复用的NodeItem组件。
    2. 使用单例模式创建NodePool组件复用池,根据传入的type类型查找复用池中是否存在可复用的组件,如果有则直接使用,如果没有则重新创建。
    3. 使用NodeContainer组件占位,从复用池NodePool中获取组件加载到页面中。

这种方式解决了常规复用中只能在父组件中复用的问题,实现了组件的跨父组件、跨页面复用,有助于减少页面的创建耗时,优化应用性能。

三、根据复用场景选择复用类型

  • 标准型复用

    适用于滚动容器内复用组件布局相同、只有数据不同的情况。这种类型的组件复用可以直接参考系统提供的组件复用方式。

  • 有限变化型复用

    适用于父组件内存在多个类型的复用单元,这些类型的单元布局有所不同的情况。根据业务逻辑的差异,可以分为以下两种子类型:

    1. 类型1和类型2布局不同,业务逻辑也不同

      建议将两种类型的组件分别使用两个不同的自定义组件进行复用,并设置不同的reuseId

    2. 类型1和类型2布局不同,但业务逻辑有很多公用

      为了复用公用的逻辑代码、减少代码冗余,可以给同一个组件设置不同的reuseId来进行复用。这种方式下,复用组件的list以reuseId作为标识,在复用池中实现不同布局下的逻辑复用。

综上所述,HarmonyOS Next中组件复用的实现方式多样,开发者可以根据具体的应用场景和需求选择合适的复用方式,以提高开发效率和应用性能。

1 个回答

组件复用的实现方式主要有以下两种:

  • 系统提供的组件复用:使用@Reusable装饰器修饰自定义组件,使其具备组件复用能力,其原理机制可以参考组件复用原理与使用。
  • 自定义组件复用:使用BuilderNode实现全局复用,
    系统提供的组件复用的行为,是将子组件放在父组件的复用缓存池里,缓存池是一个Map套Array的数据结构,以reuseld为key,具有相同reuseld的组件在同一个List中,可以相互复用,reuseld默认是自定义组件的名字。

image.png

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进