状态驱动开发入门:玩转 @State 与 @Provide(附实操案例与效果图)
在鸿蒙应用开发中,状态管理是构建动态交互界面的核心。本文将通过实战案例,带你深入理解 @State 与 @Provide 的使用,掌握组件间的状态共享与管理。
🧠 一、理解状态管理的核心概念
在 ArkTS 中,状态管理机制允许开发者通过装饰器(如 @State、@Provide)定义和管理组件的状态,实现数据驱动的 UI 更新。
- @State:用于定义组件内部的响应式状态,状态变化会自动触发 UI 更新。
- @Provide / @Consume:用于在组件树中向下传递和消费状态,实现组件间的状态共享。
🛠️ 二、实操案例:构建一个计数器应用
我们将创建一个简单的计数器应用,包含两个组件:
- CounterProvider:提供计数器状态。
- CounterDisplay:显示计数值并提供增加按钮。 (鸿蒙应用开发HarmonyOS 4.0实战)
1. 创建状态提供者组件
@Component
export struct CounterProvider {
@State count: number = 0;
build() {
// 使用 Provide 向子组件传递 count 状态
Provide('count', this.count);
Column() {
// 渲染子组件
CounterDisplay();
}
}
}
2. 创建状态消费者组件
@Component
export struct CounterDisplay {
@Consume('count') count: number;
build() {
Column() {
Text(`当前计数:${this.count}`)
.fontSize(20)
.margin({ bottom: 10 });
Button('增加')
.onClick(() => {
this.count += 1;
});
}
}
}
3. 运行效果图
运行上述代码后,界面将显示当前计数值,并提供一个“增加”按钮。每点击一次按钮,计数值加一,UI 自动更新。
📌 三、总结与建议
- 使用 @State 定义组件内部状态,适用于组件自身的状态管理。
- 使用 @Provide / @Consume 实现组件间的状态共享,适用于需要跨组件传递状态的场景。
- 合理使用状态管理机制,可以提高应用的可维护性和扩展性。
通过本篇实操案例,你应该对鸿蒙的状态管理有了更深入的理解。