• Home
Name Date Size #Lines LOC

..--

AppScope/22-Oct-2025-4643

entry/22-Oct-2025-3,5153,331

hvigor/22-Oct-2025-5048

.gitignoreD22-Oct-2025133 1212

README.mdD22-Oct-20254.9 KiB10281

build-profile.json5D22-Oct-20252 KiB6867

code-linter.json5D22-Oct-20252.2 KiB5857

hvigorfile.tsD22-Oct-20251.5 KiB335

oh-package.json5D22-Oct-20251.5 KiB3735

ohosTest.mdD22-Oct-20251.6 KiB108

README.md

1# 组件复用示例
2
3### 介绍
4
51.主页实现图文混排组件复用场景;
62.实现日历场景的组件复用,属于高负载刷新的组件复用场景;
7
8### 效果预览
9
10效果如下所示:
11
12|主界面|列表二级联动|自定义日历选择器|跨文件样式复用和组件复用|合理处理高负载组件的渲染文章示例代码|
13|--------------------------------|--------------------------------|--------------------------------|--------------------------------|--------------------------------|
14|![Alt text](entry/src/main/resources/base/media/main.png)|![Alt text](entry/src/main/resources/base/media/example1.PNG)|![Alt text](entry/src/main/resources/base/media/example2.PNG)|![Alt text](entry/src/main/resources/base/media/example3.PNG)|![Alt text](entry/src/main/resources/base/media/example4.PNG)|
15
16使用说明
17
181. 在主界面,点击蓝色按钮"列表二级联动"。
19    * 滑动二级列表侧控件,一级列表随之滚动。
20    * 点击一级列表,二级列表随之滚动。
212.  在主界面,点击蓝色按钮"自定义日历选择器"。
22    * 点击购物车页面的list列表跳转商品详情页。
233.  在主界面,点击蓝色按钮"跨文件样式复用和组件复用"。
24    * 加载完成后显示主界面,点当前日期后会显示日历选择器,选择日期后会关闭日历选择器,主页面日期会变成选定的日期。
254.  在主界面,点击蓝色按钮"合理处理高负载组件的渲染文章示例代码"。
26    * 加载10年的日历数据。
27
28
29### 工程目录
30
31```
32entry/src/main/ets/
33|---pages
34|   |---Example1
35|   |   |---DataType.ets                       // 数据类型定义
36|   |   |---Example1.ets
37|   |   |---SecondaryLinkExample.ets           // 二级联动功能实现页面
38|   |---Example2
39|   |   |---components
40|   |   |   |---DateModel.ets                  // 数据类型定义
41|   |   |   |---GetDate.ets                    // 获取日期信息
42|   |   |   |---MonthDataSource.ets            // 数据类型定义
43|   |   |----view
44|   |   |   |---CalendarView.ets               // 场景主页面 + 自定义日历
45|   |   |---Example2.ets
46|   |---Example3
47|   |   |---components
48|   |   |   |---CommonText.ets                 // 自定义组件封装
49|   |   |   |---LazyForEach.ets                // 懒加载
50|   |   |----view
51|   |   |   |---Details.ets                    // 页面:详情页
52|   |   |   |---ShoppingCart.ets               // 页面:购物车
53|   |   |---Example3.ets
54|   |---Example4
55|   |   |---GetDate.ets                        // 获取日期信息
56|   |   |---MonthDataSource.ets                // 懒加载数据类型
57|   |   |---Example4.ets
58|   |   |---ReusePage.ets                      // 正常加载数据的页面
59|   |---index.ets                              // 首页
60```
61
62### 具体实现
63
64* Example1(列表二级联动) 源码参考: [Example1](entry/src/main/ets/pages/Example1)
65    * 构造懒加载数据源类型[MyDataSource](entry/src/main/ets/pages/Example1/DataType.ets)
66    * 一二级列表分别绑定不同的Scroller对象,一级列表(tagLists)绑定classifyScroller对象,二级列表绑定scroller对象。
67    * 通过循环,构造一二级列表数据。
68    * 点击一级列表后,通过一级列表的索引获取二级列表的索引,调用scrollToIndex方法将一二级列表滚动到指定索引值。
69    * 通过二级列表索引获取一级列表索引,调用scrollToIndex方法将一级列表滚动到指定索引值。
70* Example2(自定义日历选择器) 源码参考: [Example2](entry/src/main/ets/pages/Example2)
71    * 获取当前月和下个月的日期信息。源码参考[GetDate.ets](entry/src/main/ets/pages/Example2/components/GetDate.ets)
72    * 通过Flex类初始化自定义日历界面。源码参考[CalendarView.ets](entry/src/main/ets/pages/Example2/view/CalendarView.ets)。
73* Example3(跨文件样式复用和组件复用) 源码参考: [Example3](entry/src/main/ets/pages/Example3)
74    * 使用了自定义封装的Image+Text的图文复合组件[ImageText](entry/src/main/ets/pages/Example3/common/CommonText.ets)
75* Example4(合理处理高负载组件的渲染文章示例代码) 源码参考: [Example4](entry/src/main/ets/pages/Example4)
76    * 通过组件复用,加载10年的日历数据。源码参考:[ReusePage.ets](entry/src/main/ets/pages/Example4/ReusePage.ets)
77
78### 相关权限
79
8081
82### 依赖
83
8485
86### 约束与限制
87
881. 本示例仅支持标准系统上运行,支持设备:Phone;
892. 本示例为Stage模型,支持API20版本SDK,SDK版本号(API Version 20),镜像版本号(5.0.1.5)。
903. 本示例需要使用DevEco Studio 版本号(6.0.0.6)版本才可编译运行。
91
92### 下载
93
94如需单独下载本工程,执行如下命令:
95
96```
97git init
98git config core.sparsecheckout true
99echo code/ArkTS1.2/ComponentSample/ > .git/info/sparse-checkout
100git remote add origin https://gitee.com/openharmony/applications_app_samples.git
101git pull
102```