已合并
修改README文档 #7727
tianlongdevcode创建于 2025年11月20日
修改README文档 #7727
已合并
共 8 个文件变更+32-35
| @@ -1,7 +1,8 @@ | |||
| 1 | -# MVVM模式(状态管理V2)示例 | 1 | +# AppStorageV2: 应用全局UI状态存储 |
| 2 | 2 | ||
| 3 | ### 介绍 | 3 | ### 介绍 |
| 4 | -本教程通过一个简单的待办事项应用示例,逐步引入了状态管理V2装饰器,并通过代码重构实现了MVVM架构。最终,将数据、逻辑和视图分层,使得代码结构更加清晰、易于维护。具体介绍链接: | 4 | + |
| 5 | +本示例通过使用[ArkUI指南文档](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui)中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接: | ||
| 5 | 6 | ||
| 6 | 1. [AppStorageV2: 应用全局UI状态存储](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-new-appstoragev2.md)指南文档中示例代码片段的工程化,主要目标是实现指南中示例代码需要与sample工程文件同源。 | 7 | 1. [AppStorageV2: 应用全局UI状态存储](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-new-appstoragev2.md)指南文档中示例代码片段的工程化,主要目标是实现指南中示例代码需要与sample工程文件同源。 |
| 7 | 8 | ||
| @@ -53,7 +54,7 @@ | |||
| 53 | ``` | 54 | ``` |
| 54 | git init | 55 | git init |
| 55 | git config core.sparsecheckout true | 56 | git config core.sparsecheckout true |
| 56 | -echo code/DocsSample/ArkUISample/StateMgmtV2MVVM > .git/info/sparse-checkout | 57 | +echo code/DocsSample/ArkUISample/AppStorageV2 > .git/info/sparse-checkout |
| 57 | git remote add origin https://gitcode.com/openharmony/applications_app_samples.git | 58 | git remote add origin https://gitcode.com/openharmony/applications_app_samples.git |
| 58 | git pull origin master | 59 | git pull origin master |
| 59 | ``` | 60 | ``` |
| @@ -1,11 +1,10 @@ | |||
| 1 | -# @Once:初始化同步一次 | 1 | +# @Computed装饰器:计算属性 |
| 2 | 2 | ||
| 3 | ### 介绍 | 3 | ### 介绍 |
| 4 | 4 | ||
| 5 | -本示例展示了[@Once:初始化同步一次](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-new-once.md)装饰器的使用方法: | 5 | +本示例通过使用[ArkUI指南文档](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui)中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接: |
| 6 | 6 | ||
| 7 | -1. @Once用于期望变量仅初始化同步数据源一次,之后不再继续同步变化的场景; | 7 | +1. [@Computed装饰器:计算属性](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-new-Computed.md) |
| 8 | -2. 当@Once与@Param结合使用时,可以解除@Param无法在本地修改的限制,并能够触发UI刷新。此时,使用@Param和@Once的效果类似于@Local,但@Param和@Once还能接收外部传入的初始值; | ||
| 9 | 8 | ||
| 10 | ### 效果预览 | 9 | ### 效果预览 |
| 11 | 10 | ||
| @@ -14,15 +13,6 @@ | |||
| 14 | |-------------------------|-----------------------------|-----------------------------|-----------------------------|-----------------------------| | 13 | |-------------------------|-----------------------------|-----------------------------|-----------------------------|-----------------------------| |
| 15 | |  |  |  |  |  | | 14 | |  |  |  |  |  | |
| 16 | 15 | ||
| 17 | -### 具体实现 | ||
| 18 | - | ||
| 19 | -1. 到对应模块的官网文档,理解模块功能和使用说明 | ||
| 20 | - | ||
| 21 | -2. 补充对应的代码片段,确保可以运行 | ||
| 22 | - | ||
| 23 | -3. 拿真机,填写测试用例,运行项目 | ||
| 24 | - | ||
| 25 | -4. 拿真机对用例进行自动测试 | ||
| 26 | 16 | ||
| 27 | ### 使用说明 | 17 | ### 使用说明 |
| 28 | 18 | ||
| @@ -38,6 +28,7 @@ entry/src/ | |||
| 38 | │ │ └── pages | 28 | │ │ └── pages |
| 39 | │ │ ├── Index.ets | 29 | │ │ ├── Index.ets |
| 40 | │ │ └── ComputedInitParam.ets | 30 | │ │ └── ComputedInitParam.ets |
| 31 | +│ │ └── ComputedProperty.ets | ||
| 41 | │ │ └── ComputingPropertyResolution.ets | 32 | │ │ └── ComputingPropertyResolution.ets |
| 42 | │ │ └── CustomComponentUse.ets | 33 | │ │ └── CustomComponentUse.ets |
| 43 | │ │ └── ObservedV2ClassUser.ets | 34 | │ │ └── ObservedV2ClassUser.ets |
| @@ -52,6 +43,14 @@ entry/src/ | |||
| 52 | 43 | ||
| 53 | ``` | 44 | ``` |
| 54 | 45 | ||
| 46 | +### 具体实现 | ||
| 47 | + | ||
| 48 | +1. @ComponentV2中@Computed装饰getter方法,避免UI重复计算,依赖状态变化仅重算一次; | ||
| 49 | + | ||
| 50 | +2. @ObservedV2类中@Computed依赖@Trace变量,异步初始化,依赖变化自动重算; | ||
| 51 | + | ||
| 52 | +3. @Computed计算结果可初始化子组件@Param,依赖变化时自动同步 | ||
| 53 | + | ||
| 55 | ### 相关权限 | 54 | ### 相关权限 |
| 56 | 55 | ||
| 57 | 不涉及。 | 56 | 不涉及。 |
| @@ -4,13 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | 本示例通过使用[ArkUI指南文档](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui)中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接: | 5 | 本示例通过使用[ArkUI指南文档](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui)中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接: |
| 6 | 6 | ||
| 7 | -### 1.[线性容器(Column)](https://docs.openharmony.cn/pages/v4.1/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-column.md) | 7 | +1. [自定义组件冻结功能(V1)](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-custom-components-freeze.md) |
| 8 | - | ||
| 9 | -### 2.[文本显示器(Text)](https://docs.openharmony.cn/pages/v5.1/en/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-text.md) | ||
| 10 | - | ||
| 11 | -### 3.[Button](https://docs.openharmony.cn/pages/v4.1/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-button.md) | ||
| 12 | - | ||
| 13 | -### 4[ 自定义组件冻结功能](https://docs.openharmony.cn/pages/v5.1/zh-cn/application-dev/ui/state-management/arkts-custom-components-freeze.md) | ||
| 14 | 8 | ||
| 15 | ### 效果预览 | 9 | ### 效果预览 |
| 16 | | 页面1页面2跳转 | 页面2返回上一页 | TabContent创建 | LazyForEach中缓存的自定义组件进行冻结 | NavigationContentMsgStack会被设置成非激活态 | | 10 | | 页面1页面2跳转 | 页面2返回上一页 | TabContent创建 | LazyForEach中缓存的自定义组件进行冻结 | NavigationContentMsgStack会被设置成非激活态 | |
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | ### 介绍 | 3 | ### 介绍 |
| 4 | 4 | ||
| 5 | -本工程主要实现了对以下指南文档中 [@Event装饰器:规范组件输](https://docs.openharmony.cn/pages/v6.0/zh-cn/application-dev/ui/state-management/arkts-new-event.md) 示例代码片段的工程化,主要目标是帮助开发者快速了解在@ComponentV2装饰的自定义组件中使用@Event装饰器。 | 5 | +本工程主要实现了对以下指南文档中 [@Event装饰器:规范组件输出](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-new-event.md) 示例代码片段的工程化,主要目标是帮助开发者快速了解在@ComponentV2装饰的自定义组件中使用@Event装饰器。 |
| 6 | 6 | ||
| 7 | ### 更改父组件中变量 | 7 | ### 更改父组件中变量 |
| 8 | 8 | ||
| @@ -1,4 +1,4 @@ | |||
| 1 | -# @Provider装饰器和@Consumer装饰器指南文档示例 | 1 | +# @Provider装饰器和@Consumer装饰器:跨组件层级双向同步 |
| 2 | 2 | ||
| 3 | ### 介绍 | 3 | ### 介绍 |
| 4 | 4 | ||
| @@ -6,14 +6,16 @@ | |||
| 6 | 6 | ||
| 7 | @Provider和@Consumer属于状态管理V2装饰器,所以只能在@ComponentV2中才能使用,在@Component中使用会编译报错。 | 7 | @Provider和@Consumer属于状态管理V2装饰器,所以只能在@ComponentV2中才能使用,在@Component中使用会编译报错。 |
| 8 | 8 | ||
| 9 | +1. [@Provider装饰器和@Consumer装饰器:跨组件层级双向同步](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-new-Provider-and-Consumer.md) | ||
| 10 | + | ||
| 9 | 使用说明: | 11 | 使用说明: |
| 10 | 1. 该工程可以选择在模拟器和开发板上运行。 | 12 | 1. 该工程可以选择在模拟器和开发板上运行。 |
| 11 | 2. 点击构建,即可在生成的应用中点击对应的按钮,观察自定义占位节点的不同应用。 | 13 | 2. 点击构建,即可在生成的应用中点击对应的按钮,观察自定义占位节点的不同应用。 |
| 12 | 3. 进入”DocsSample/ArkUISample/ProviderConsumer/entry/src/ohosTest/ets/test/index.test.ets“文件,可以对本项目进行UI的自动化测试。 | 14 | 3. 进入”DocsSample/ArkUISample/ProviderConsumer/entry/src/ohosTest/ets/test/index.test.ets“文件,可以对本项目进行UI的自动化测试。 |
| 13 | ### 效果预览 | 15 | ### 效果预览 |
| 14 | 16 | ||
| 15 | -| 首页 | 列表类组件目录 | 列表中显示数据示例 | | 17 | +| 首页 | 列表类组件目录 | |
| 16 | -|------------------------------------|------------------------------------|------------------------------------| | 18 | +|------------------------------------|------------------------------------| |
| 17 | |  |  | | 19 | |  |  | |
| 18 | 20 | ||
| 19 | ### 使用说明 | 21 | ### 使用说明 |
| @@ -2,7 +2,9 @@ | |||
| 2 | 2 | ||
| 3 | ### 介绍 | 3 | ### 介绍 |
| 4 | 4 | ||
| 5 | -@Require是校验@Prop、@State、@Provide、@BuilderParam、@Param和普通变量(无状态装饰器修饰的变量)是否需要构造传参的一个装饰器。 | 5 | +本示例通过使用[ArkUI指南文档](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui)中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接: |
| 6 | + | ||
| 7 | +1. [@Require装饰器:校验构造传参](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-require.md) | ||
| 6 | 8 | ||
| 7 | ### 效果预览 | 9 | ### 效果预览 |
| 8 | 10 | ||
| @@ -10,8 +12,6 @@ | |||
| 10 | |-------------------|------------------------------------|------------------------------------|--------------------------------------|--------------------------------------| | 12 | |-------------------|------------------------------------|------------------------------------|--------------------------------------|--------------------------------------| |
| 11 | |  |  |  |  |  | | 13 | |  |  |  |  |  | |
| 12 | 14 | ||
| 13 | - | ||
| 14 | -不涉及。 | ||
| 15 | ### 使用说明 | 15 | ### 使用说明 |
| 16 | 16 | ||
| 17 | 1. 应用在启动后显示首页4个按钮。 | 17 | 1. 应用在启动后显示首页4个按钮。 |
| @@ -43,6 +43,7 @@ entry/src/ | |||
| 43 | 1. 当Child组件内使用@Require装饰器和@Prop、@State、@Provide、@BuilderParam、@Param和普通变量(无状态装饰器修饰的变量)结合使用时,父组件Index在构造Child时必须传参,否则编译不通过。 | 43 | 1. 当Child组件内使用@Require装饰器和@Prop、@State、@Provide、@BuilderParam、@Param和普通变量(无状态装饰器修饰的变量)结合使用时,父组件Index在构造Child时必须传参,否则编译不通过。 |
| 44 | 2. 使用@ComponentV2修饰的自定义组件ChildPage通过父组件ParentPage进行初始化,因为有@Require装饰@Param,所以父组件必须进行构造赋值。 | 44 | 2. 使用@ComponentV2修饰的自定义组件ChildPage通过父组件ParentPage进行初始化,因为有@Require装饰@Param,所以父组件必须进行构造赋值。 |
| 45 | 3. 当Child组件内将@Require装饰器与@Prop、@State、@Provide、@BuilderParam、普通变量(无状态装饰器修饰的变量)结合使用时,若父组件Index在构造Child时未传递相应参数,则会导致编译失败。当ChildV2组件内将@Require装饰器与@Param结合使用时,若父组件Index在构造ChildV2时未传递相应参数,则同样会导致编译失败。 | 45 | 3. 当Child组件内将@Require装饰器与@Prop、@State、@Provide、@BuilderParam、普通变量(无状态装饰器修饰的变量)结合使用时,若父组件Index在构造Child时未传递相应参数,则会导致编译失败。当ChildV2组件内将@Require装饰器与@Param结合使用时,若父组件Index在构造ChildV2时未传递相应参数,则同样会导致编译失败。 |
| 46 | + | ||
| 46 | ### 相关权限 | 47 | ### 相关权限 |
| 47 | 48 | ||
| 48 | 不涉及。 | 49 | 不涉及。 |
| @@ -1,4 +1,4 @@ | |||
| 1 | -# ArkUI@Track装饰器指南文档示例 | 1 | +# @Track装饰器:class对象属性级更新 |
| 2 | 2 | ||
| 3 | ### 介绍 | 3 | ### 介绍 |
| 4 | 4 | ||
| @@ -6,7 +6,7 @@ stateTrack | |||
| 6 | 本示例通过使用[ArkUI指南文档](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui) | 6 | 本示例通过使用[ArkUI指南文档](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/ui) |
| 7 | 中各场景的开发示例,展示在工程中,帮助开发者更好地理解@Track装饰器:class对象属性并合理使用。该工程中展示的代码详细描述可查如下链接: | 7 | 中各场景的开发示例,展示在工程中,帮助开发者更好地理解@Track装饰器:class对象属性并合理使用。该工程中展示的代码详细描述可查如下链接: |
| 8 | 8 | ||
| 9 | -1. [class属性级更新说明](https://gitcode.com/tianlongdevcode/docs_zh/blob/master/zh-cn/application-dev/ui/state-management/arkts-track.md)。 | 9 | +1. [class属性级更新说明](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-track.md) |
| 10 | 10 | ||
| 11 | ### [class属性级更新说明] | 11 | ### [class属性级更新说明] |
| 12 | 12 | ||
| @@ -73,6 +73,6 @@ entry/src/ohosTest/ | |||
| 73 | git init | 73 | git init |
| 74 | git config core.sparsecheckout true | 74 | git config core.sparsecheckout true |
| 75 | echo code/DocsSample/ArkUISample/StateTrack > .git/info/sparse-checkout | 75 | echo code/DocsSample/ArkUISample/StateTrack > .git/info/sparse-checkout |
| 76 | -git remote add origin https://gitCode.com/openharmony/applications_app_samples.git | 76 | +git remote add origin https://gitcode.com/openharmony/applications_app_samples.git |
| 77 | git pull origin master | 77 | git pull origin master |
| 78 | ```` | 78 | ```` |
| @@ -1,4 +1,4 @@ | |||
| 1 | -# com.samples.wrapbuilder | 1 | +# wrapBuilder:封装全局@Builder |
| 2 | 2 | ||
| 3 | ## 介绍 | 3 | ## 介绍 |
| 4 | 4 | ||
| @@ -19,7 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | 从API version 12开始,wrapBuilder支持在元服务中使用。 | 20 | 从API version 12开始,wrapBuilder支持在元服务中使用。 |
| 21 | 21 | ||
| 22 | -[@ComponentV2装饰器](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-new-componentV2.md)。 | 22 | +[@ComponentV2装饰器](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-create-custom-components.md#componentv2)。 |
| 23 | 23 | ||
| 24 | [wrapBuilder:封装全局@Builder](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-wrapBuilder.md)。 | 24 | [wrapBuilder:封装全局@Builder](https://gitcode.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/state-management/arkts-wrapBuilder.md)。 |
| 25 | 25 | ||