为了大家对鸿蒙生态能够了解,今天的分享是作为鸿蒙生态的推荐语言,ArkTS是基于TypeScript扩展了声明式UI和状态管理能力。其核心优势在于:简洁的UI描述、响应式数据绑定、高性能渲染。以下分享三个关键实践:

1. 声明式UI构建

抛弃命令式层层嵌套,采用更接近自然语言的组件描述方式:

@Entry  
@Component  
struct HomePage {  
  build() {  
    Column() {  
      Text('任务清单')  
        .fontSize(24)  
        .margin(10)  
      TaskList()  // 嵌套自定义组件  
    }  
  }  
}  
2. 状态驱动视图更新

通过@State@Prop等装饰器实现数据自动同步:

@Component  
struct TaskList {  
  @State tasks: string[] = ['写代码', '测功能'] // 数据源变化自动刷新UI  

  build() {  
    List() {  
      ForEach(this.tasks, (item) => {  
        ListItem() {  
          Text(item).onClick(() => {  
            this.tasks.push('新任务') // 修改数据触发重绘  
          })  
        }  
      })  
    }  
  }  
}  
3. 高性能渲染优化

使用@Builder分离复杂布局,避免重复编译:

@Builder  
function Header(title: string) {  // 复用UI片段  
  Row() {  
    Image($r('app.media.logo'))  
    Text(title)  
  }  
}  

@Component  
struct ProfilePage {  
  build() {  
    Column() {  
      Header('个人中心')  // 调用Builder  
      // ...其他内容  
    }  
  }  
}  

核心代码整合(登录界面示例)

@Entry  
@Component  
struct LoginPage {  
  @State username: string = ''  
  @State password: string = ''  

  build() {  
    Column() {  
      TextInput({ placeholder: '账号' })  
        .onChange((val) => { this.username = val })  
      TextInput({ placeholder: '密码' })  
        .type(InputType.Password)  
        .onChange((val) => { this.password = val })  

      Button('登录', { type: ButtonType.Capsule })  
        .onClick(() => {  
          // 调用认证逻辑  
        })  
        .margin(20)  
        .disabled(!(this.username && this.password.length >= 6)) // 动态禁用  
    }.padding(24)  
  }  
}  

避坑提示

  • 避免在build()内进行耗时操作

  • @Link父子组件传参需用$符号:@Link task: string → TaskItem({ task: $task })

  • 列表项必须设置唯一keyForEach(arr, item => item.id, item => { ... })

ArkTS通过装饰器 + 函数式组件的组合,显著提升了开发效率与代码可维护性。其响应式机制让开发者更专注于业务逻辑,减少手动更新UI的繁琐操作。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐