HarmonyOS 状态管理(V1稳定版)

ArkUI状态管理V1提供了多种装饰器,通过使用这些装饰器,状态变量不仅可以观察在组件内的改变,还可以在不同组件层级间传递,比如父子组件、跨组件层级,也可以观察全局范围内的变化。

根据状态变量的影响范围,将所有的装饰器可以大致分为:

  • 管理组件拥有状态的装饰器:组件级别的状态管理,可以观察组件内变化,和不同组件层级的变化,但需要唯一观察同一个组件树上,即同一个页面内。

  • 管理应用拥有状态的装饰器:应用级别的状态管理,可以观察不同页面,甚至不同UIAbility的状态变化,是应用内全局的状态管理。

从数据的传递形式和同步类型层面看,装饰器也可分为:

  • 只读的单向传递;

  • 可变更的双向传递。

上图中,Components部分的装饰器为组件级别的状态管理,Application部分为应用的状态管理

开发者可以通过@StorageLink/@LocalStorageLink实现应用和组件状态的双向同步,通过

### HarmonyOS 中状态变量的使用方法 在 HarmonyOS 开发中,状态变量用于存储和管理应用中的数据变化。通过特定的装饰器来定义和监听这些状态变量的变化。 #### @Watch 装饰器:状态变量更改通知 `@Watch` 装饰器允许开发者为状态变量设置回调函数,在该状态变量发生变化时触发相应的逻辑处理[^1]: ```javascript import { Watch } from '@ohos/ability_feature'; export default class MyComponent { @State myVariable = 'initial value'; @Watch('myVariable') onMyVariableChange(newValue, oldValue) { console.log(`Value changed from ${oldValue} to ${newValue}`); } } ``` 此代码片段展示了如何利用 `@Watch` 来监控名为 `myVariable` 的状态变量,并在其值发生变更时打印旧新两个值的信息到控制台。 #### 复杂对象的状态监听 对于更复杂的对象结构,可以通过组合多个装饰器来进行深层次的状态管理和监听操作。例如,在状态管理 V1 版本下提供了几种不同的方式来接收外部输入的数据并对其进行跟踪;而在更新后的版本即状态管理 V2,则简化为了仅保留单一入口——`@Param` 装饰器负责传递来自父级组件的状态参数给子组件实例的同时支持双向绑定机制[^2]: ```typescript // 子组件内声明接受父组件传来的 prop 属性作为本地 state 变量 @Component({ props: ['parentData'] }) class ChildComp extends ComponentBase { // 将接收到的 parentData 映射成本地属性 localParentData 并保持同步关系 @Local() private localParentData!: string; mounted(): void { this.localParentData = this.parentData; // 建立观察者模式以响应任何后续变动 this.$watch(() => this.parentData, (newVal:string)=>{ this.localParentData=newVal; }); } render(){ return ( <div>{this.localParentData}</div> ); } } ``` 上述例子说明了怎样在一个子组件里对接收自其上级元件的一个字符串类型的配置项实施监视以及维护二者间的一致性联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值