-
1. 状态管理的基本概念
-
状态变量(@State):被状态装饰器装饰的变量,值改变时会触发UI刷新。 常规变量:不会触发UI刷新,仅用于计算辅助。 数据源/同步源:状态变量的原始来源,通常从父组件传递给子组件。 命名参数机制:用于父组件向子组件传递参数。
-
-
-
2. 状态管理V1
-
状态变量的管理 @State:组件内部状态变量,数值改变时引起UI渲染刷新。 @Prop:单向绑定的属性,可变但不会同步回父组件。 @Link:双向绑定的属性,父组件与子组件数据同步。 @Provide/@Consume:用于跨组件层级的状态管理。 @Observed/@ObjectLink:观察深层嵌套的数据对象。 应用级状态管理 AppStorage:应用级全局状态管理,数据可持久化。 LocalStorage:用于页面级状态共享。
-
-
4. V1 vs V2 主要区别
-
-
3. 状态管理V2(升级版)
-
改进点 状态变量独立于UI,数据更改直接触发视图更新。 支持深度观察,不仅限于第一层数据。 更精准的属性级更新,减少不必要的UI刷新。 更灵活的组件化设计,组件输入/输出更清晰。
-
新装饰器 @ObservedV2/@Trace:用于深度观察对象及其属性。 @ComponentV2:新的组件装饰器,支持V2状态管理。 @Local:组件私有状态变量,不能从外部传入初始化。 @Param/@Once:组件的输入参数,支持同步传递。 @Event:用于父组件与子组件的交互,取代@Link实现双向数据流。 @Monitor:监听V2状态变量的变化,支持深层监听。 !! 语法:用于双向绑定。
-
-
总结
-
ArkUI 采用 声明式UI编程,UI 是 状态(State) 的结果。 状态管理V1 主要依赖 @State、@Prop、@Link 等装饰器,但有 深度观察能力不足、更新不精确 的问题。 状态管理V2 提供了更 精准的属性级更新、深度观察、灵活的组件化设计,但仍处于迭代中,可能有部分功能缺失。 在开发 ArkUI 动态交互应用 时,建议了解 状态管理V2,合理选择装饰器,以 最小化UI刷新、提升性能。
-