# ComponentReuse **Repository Path**: wangqitt/component-reuse ## Basic Information - **Project Name**: ComponentReuse - **Description**: 实现组件复用 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2025-11-11 - **Last Updated**: 2025-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实现组件复用 ### 介绍 本示例为开发者展示组件复用的典型开发场景,包括同一列表内的组件复用、多个列表间的组件复用。 ### 效果预览 | 同一列表内-列表项结构类型相同 | 同一列表内-列表项结构类型不同 | 同一列表内-列表项内子组件可拆分组合 | |------------------------------------------------------------------------------------|--------------------------------------------------|--------------------------------------------------| | | | | | 多个列表间的组件复用 | |--------------------------------------------------| | | 使用说明 1. 启动应用,点击具体场景分类,进入对应列表场景中。 2. 上下滑动列表,观察体验组件复用效果,滑动时不丢帧。 ### 工程目录 ``` ├──ets │ ├──common │ │ └──MockData.ets // mock数据源 │ ├──entryability │ │ └──EntryAbility.ets // ability入口 │ ├──entrybackupability │ │ └──EntryBackupAbility.ets // ability恢复入口 │ ├──model │ │ ├──ItemData.ets // 列表项数据模型 │ │ ├──ItemDataSource.ets // 列表项数据源 │ │ └──TitleDataSource.ets // 标签数据源 │ ├──pages │ │ ├──ComposableItemPage.ets // 子组件可组合布局的列表项页面 │ │ ├──DiffListReusePage.ets // 多个列表间的组件复用页面 │ │ ├──Index.ets // 首页 │ │ ├──MultiTypeItemPage.ets // 多种结构类型的列表项页面 │ │ ├──OneTypeItemPage.ets // 相同结构类型的列表项页面 │ │ └──SameListReusePage.ets // 同一列表内的组件复用索引页面 │ ├──utils │ │ ├──IdleCallback.ets // 列表项预缓存逻辑 │ │ └──BuilderNodePool.ets // Node缓存复用池工具 │ └──view │ ├──DiffListItemNode.ets // 多个列表间的列表项占位结点 │ ├──DiffListItemView.ets // 多个列表间的列表项视图 │ ├──TabContentView.ets // 多个列表间封装的Tab内容页 │ └──TabTitleView.ets // 封装的标签选项视图 └──resources // 资源 ``` ### 具体实现 * 同一列表内的组件复用:使用@Reusable实现,复用时需要实现aboutToReuse生命周期。 * 多个列表间的组件复用:使用NodeContainer占位结点,结合NodePool全局缓存复用池,实现在不同父组件中的子组件复用。 ### 相关权限 不涉及。 ### 依赖 不涉及。 ### 约束与限制 1. 本示例仅支持标准系统上运行,支持设备:华为手机。 2. HarmonyOS系统:HarmonyOS 5.0.5 Release及以上。 3. DevEco Studio版本:DevEco Studio 5.0.5 Release及以上。 4. HarmonyOS SDK版本:HarmonyOS 5.0.5 Release SDK及以上。