本示例通过使用页面级的状态变量 和应用级的状态变量 来实现应用的状态管理。
主页 | 子组件同步父组件部分内容 | 爷孙组件之间状态同步 | 应用内全局数据与UI之间的状态同步 |
---|---|---|---|
使用说明
1.点击首页中的基本类型进入对应页面,点击按钮可以更改圆形的颜色;点击查看源码可以展示基本类型功能效果的源码。
2.点击首页中的数组类型进入对应页面,点击新增元素可以添加数据;点击删除元素可以删除数据,当数据为空时,点击删除会弹出一个提示窗;点击更新数组中的某个元素,可以更改第一条数据的age属性,当数据为空时,同样会弹出一个提示窗;点击查看源码可以展示数组类型功能效果的源码。
3.点击首页中的类对象类型进入对应页面,点击更新对象可以更改对象属性和对象属性中的属性;点击更新对象属性,对象属性数据发生变化;点击更新属性中的属性,对象属性的属性数据发生变化;点击查看源码可以展示类对象类型功能效果的源码。
4.点击首页中的只更新所绑定的组件进入对应页面,点击修改标题和内容,标题和内容数据都发生变化,页面更新标题数据,内容数据不刷新;点击查看源码可以展示类对象类型功能效果的源码。
5.点击单、双向同步进入对应页面,点击设置为粉色按钮,父组件圆形颜色更新,两个子组件颜色同步更新;点击设置为蓝色按钮,子组件A圆形颜色更新,父组件和子组件B颜色不更新;点击设置为红色按钮,子组件B圆形颜色更新,父组件和子组件A圆形颜色同步更新,点击查看源码可以展示单、双向同步功能效果的源码。
6.点击子组件同步父组件的部分内容进入对应页面,点击父组件中的属性1修改数据,子组件中的属性1数据同步,点击子组件的属性1修改数据,父组件中的属性1数据同步,点击查看源码可以展示子组件同步父组件的部分内容功能效果的源码。
7.点击爷孙组件之间状态同步进入对应页面,点击爷组件下拉框组件选择颜色,下拉框文本和圆形颜色改变,孙组件下拉框文本和圆形颜色同步刷新;点击孙组件下拉框选择颜色,下拉框文本和圆形颜色改变,爷组件下拉框文本和圆形颜色同步刷新,点击查看源码可以展示爷孙组件之间状态同步功能效果的源码。
8.点击兄弟组件之间状态同步进入对应页面,点击兄弟A组件下拉框选择颜色,下拉框文本和圆形颜色改变,兄弟B组件下拉框文本和圆形颜色同步刷新,点击兄弟B组件下拉框选择颜色,下拉框文本和圆形颜色改变,兄弟A组件下拉框文本和圆形颜色同步刷新,点击查看源码可以展示爷孙组件之间状态同步功能效果的源码。
9.点击应用内全局数据与UI之间的状态同步进入对应页面,点击修改夜间模式状态和字体大小,当前夜间模式状态以及字体大小发生变化,进入Ability1和Ability2页面,夜间模式状态以及字体大小同步更新;在Ability1界面中改变夜间模式状态和字体大小,夜间模式状态和字体大小发生变化,进入到主页面和Ability2页面,夜间模式状态同步更新,字体大小不变;在Ability2界面中修改夜间模式状态,夜间模式状态发生改变,进入到主页面和Ability1页面,夜间模式状态同步,点击查看源码可以展示应用内全局数据与UI之间的状态同步功能效果的源码。
10.点击Ability内全局数据与UI之间的状态同步进入对应页面,点击修改夜间模式状态和字体大小,当前夜间模式状态以及字体大小发生变化时,进入Page1和Page2以及跨Ability不同步页面,Page1和Page2夜间模式状态以及字体大小同步更新,跨Ability页面不同步更新;在Page1界面中改变夜间模式状态和字体大小,夜间模式状态和字体大小发生变化,进入到主页面、Page2和跨Ability不同步页面,主页面和Page2夜间模式状态同步更新,但是字体不发生变化,跨Ability页面夜间模式状态和字体都不同步更新;在Page2界面中修改夜间模式状态,夜间模式状态发生改变,进入到主页面、Page1页面和跨Ability不同步页面,主页和Page1夜间模式状态同步,跨Ability页面都不同步更新;在跨Ability界面中修改夜间模式状态,夜间模式状态发生改变,进入主页、Page1和Page2页面,夜间模式状态不同步,点击查看源码可以展示Ability内全局数据与UI之间的状态同步功能效果的源码。
entry/src/main/ets/
|---commoncomponents
| |---CodeView.ets // 代码展示组件
| |---TitleBar.ets // 标题组件
| |---TitleBarDark.ets // 夜间模式下标题组件
| |---ViewCodeText.ets // 查看源码文本组件
|---entryability
| |---EntryAbility.ts
|---outofsyncability
| |---OutOfSyncAbility.ts
|---MainAbility
|---pages
| |---applylevelstagemanagement // 应用级状态管理
| | |---abilityglobaldatasync // Ability内全局数据与UI之间的状态同步
| | | |---AbilityGlobalDataSync.ets
| | | |---AbilityGlobalDataSyncCode.ets // Ability内全局数据与UI之间的状态同步主页
| | | |---AbilityOutOfSyncPage.ets // 跨Ability页面
| | | |---LocalStorageLinkPage.ets // 展示LocalStorageLink效果页面
| | | |---LocalStoragePropPage.ets // 展示LocalStorageProp效果页面
| | |---applyglobaldatasync // 应用内全局数据与UI之间的状态同步
| | | |---ApplyGlobalDataSync.ets
| | | |---ApplyGlobalDataSyncCode.ets // 应用内全局数据与UI之间的状态同步主页
| | | |---StorageLinkAbilityPage.ets // 展示StorageLinkAbility页面
| | | |---StoragePropAbilityPage.ets // 展示StoragePropAbility页面
| | |---model
| | | |---AbilityConfigType.ets // Ability参数类型
| | | |---CommonMethods.ets // 公用函数启动Ability
| |---home
| | |---data
| | | |---HomeData.ets // 首页数据
| | |---model
| | | |---CategoricalDataType.ets // 层级类型
| | |---Home.ets // 首页
| | |---TabContentNavigation.ets // Tab内容区组件
| |---pagelevelstagemanagement // 页面级状态管理
| | |---multicompomentssync // 自定义组件之间的状态同步
| | | |---brothercomponentssync // 兄弟组件之间状态同步
| | | | |---BrotherComponentSync.ets
| | | | |---BrotherComponentSyncCode.ets // 兄弟组件之间状态同步首页
| | | | |---ConsumeBrotherOneComponent.ets // @Consume状态变量组件
| | | | |---ConsumeBrotherTwoComponent.ets // @Consume状态变量组件
| | | | |---LinkBrotherOneComponent.ets // @Link状态变量组件
| | | | |---LinkBrotherTwoComponent.ets // @Link状态变量组件
| | | | |---ProvideAndConsumeSync.ets // @Privide状态变量组件
| | | | |---StateAndLinkSync.ets // @State状态变量组件
| | | |---data
| | | | |---ColorData.ets // 颜色数据
| | | |---deepnestcomponentssync // 爷孙组件嵌套
| | | | |---ConsumeDescendentComponent.ets // @Consume孙组件
| | | | |---DeepNestComponentsSync.ets
| | | | |---DeepNestComponentsSyncCode.ets // 爷孙组件首页
| | | | |---LinkDescendentComponent.ets // @Link孙组件
| | | | |---ProvideAndConsumeSync.ets // @Provide爷组件
| | | | |---StateAndLinkSync.ets // @State爷组件
| | | |---model
| | | | |---ColorType.ets // 颜色数据类型
| | | |---parentchildcomponentsync // 父子组件之间状态同步
| | | | |---parentchildpartialcontentsync // 子组件同步父组件部分内容
| | | | | |---ObjectLinkComponent.ets // @ObjectLink子组件
| | | | | |---ParentChildPartialContentSync.ets
| | | | | |---ParentChildPartialContentSyncCode.ets // @Observer父组件
| | | | |---uniandbidirectionsync // 单、双向同步
| | | | | |---ComponentLink.ets // Link组件
| | | | | |---ComponentProp.ets // Prop组件
| | | | | |---UniAndBidirectionSync.ets
| | | | | |---UniAndBidirectionSyncCode.ets // @State父组件
| | |---singlecomponentstatevariables // 单组件的状态同步
| | | |---decoratedobjecttype // 修饰的对象类型
| | | | |---arraytype // 数组类型
| | | | | |---ArrayType.ets
| | | | | |---ArrayTypeCode.ets // 数组类型源码页
| | | | |---basetype // 基本类型
| | | | | |---BaseType.ets
| | | | | |---BaseTypeCode.ets // 基本类型源码页
| | | | |---classobjecttype // 对象类型
| | | | | |---ClassObjectType.ets
| | | | | |---ClassObjectTypeCode.ets // 对象类型源码页
| | | |---updatetactics // 更新原理
| | | | |---updateboundcomponent // 只更新所绑定的组件
| | | | | |---UpdateBoundComponent.ets
| | | | | |---UpdateBoundComponentCode.ets // 只更新所绑定的组件源码
|---storagelinkability
| |---StorageLinkAbility.ts
|---storagepropability
| |---StoragePropAbility.ts
|---utils
| |---Logger.ts // 日志文件
| |---ResourceUtils.ts // 资源转换方法
| |---StartAbilityUtils.ts // 启动Ability方法
不涉及。
不涉及。
1.本示例仅支持标准系统上运行。
2.本示例已适配API version 9版本SDK,版本号:4.0.5.2。
3.本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400, built on April 7, 2023)才可编译运行。
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code/UI/StateManagement/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。