要在harmonyos中真正用起来arkui声明式开发范式,必须使用@state装饰器声明响应式状态变量,通过声明式语法描述ui结构,让ui随状态自动更新样式和显隐,并组合多个状态实现复杂交互。

要在HarmonyOS中真正用起来ArkUI声明式开发范式,不是照着语法写几行Text和Column就完事——你得让UI随状态自动响应变化,否则写的还是命令式代码的壳。
创建可响应的状态变量
打开 entry/src/main/ets/pages/Index.ets,在结构体顶部用 @State 装饰器声明一个数字变量:@State count: number = 0
这一步不能用 let 或 const 替代——@State 是触发UI刷新的开关,没有它,后续所有界面更新都不会发生。
保存后,DevEco Studio会自动注入响应式代理逻辑,变量一旦被修改,所有引用它的UI组件立刻重绘。
用声明式语法描述UI结构
在 build() 方法内,用嵌套组件树表达界面意图:
先写一个垂直容器:Column() {
里面放文本显示当前数值:Text(this.count.toString()).fontSize(24).margin({ top: 20 })
再加一个按钮触发变化:Button('点击+1').onClick(() => { this.count++ }).margin({ top: 16 })
最后闭合容器:}
注意:不要手动调用 setText() 或 setVisibility() 这类命令式方法——ArkUI不允许也不需要你干预DOM节点。你只描述“此刻UI应该长什么样”,框架负责把 this.count 的新值映射到Text组件上。
让UI根据状态自动切换样式
方法一:直接在属性中嵌入三元表达式
Text(this.count.toString())<br> .fontSize(24)<br> .fontColor(this.count > 5 ? '#FF4A4A' : '#333333')<br> .fontWeight(this.count > 10 ? FontWeight.Bold : FontWeight.Normal)
方法二:用条件渲染控制组件显隐
if (this.count >= 3) {<br> Text('已点击3次以上!').fontColor('#00AA66').fontSize(18)<br>}
这两种写法都无需额外监听或手动刷新——只要 this.count 变,UI就跟着变。这是声明式范式最核心的落地点。
组合多个状态驱动复杂交互
第一步:在结构体中补充两个新状态
@State message: string = '等待点击';<br>@State isActive: boolean = true;
第二步:修改按钮的点击逻辑,同时更新多个状态
.onClick(() => {<br> this.count++;<br> this.message = `当前计数:${this.count}`;<br> this.isActive = this.count % 2 === 0;<br>})
第三步:在Column里插入这两项新UI
Text(this.message).fontSize(16).margin({ top: 8 })<br>Text(`激活状态:${this.isActive}`).fontSize(14).fontColor(this.isActive ? '#007DFF' : '#999')
第四步:给按钮加个动态禁用状态
Button('点击+1').onClick(...).enabled(this.count
这四步做完,你就完成了从单状态到多状态、从静态展示到双向联动的完整声明式闭环。UI不再是一堆孤立的节点,而是由状态自然生长出来的视图树。











