基于 ArkTS 的 跨平台技术在开源鸿蒙中的使用发|网络请求实战与 UI 绑定

在 HarmonyOS 时代,ArkTS 已经成为应用开发的核心语言。它不仅具备强类型与强安全特性,还融合了声明式 UI 开发范式,使界面渲染更直观、更高效。

本篇文章将从 创建 ArkTS 新项目 → UI 开发 → 网络请求 → 数据展示 全流程入手,让你迅速掌握 OpenHarmony 网络交互的基本能力。


一、创建 ArkTS 项目与模拟器配置

新建 ArkTS 项目

环境:DevEco Studio(最新版本)

步骤如下:

1️⃣ 点击 Create Project
2️⃣ 选择模板:ArkTS → Empty Ability(Stage 模型)
3️⃣ 填写应用名称、包名及工程路径
4️⃣ 创建完成进入工程目录

🌟 提醒:若提示缺少 SDK,点击 SDK 管理重新选择即可。
在这里插入图片描述
在这里插入图片描述


启动模拟设备(仿真器)

在顶部设备选择栏中:

  • 点击 Device Manager
  • 创建 OpenHarmony 虚拟设备
  • 启动后在设备栏即可选择进行调试部署

到这里,我们的项目运行环境准备就绪 🎯


在这里插入图片描述
在这里插入图片描述

二、ArkUI 声明式 UI:快速搭建网络请求界面

ArkUI 与 Jetpack Compose、SwiftUI 思想类似:

UI = f(State)

我们进入 entry/src/main/ets/pages/index.ets
将 build() 内默认内容删掉,编写自定义 UI

添加输入框 + 按钮 + 列表

@Entry
@Component
struct IndexPage {
  @State searchKeyword: string = ''
  @State accessToken: string = ''
  @State userList: Array<User> = []
  @State isLoading: boolean = false
  
  build() {
    Column({ space: 10 }) {
      // 输入搜索关键词
      TextInput({ placeholder: '输入搜索关键字' })
        .width('90%')
        .onChange(v => this.searchKeyword = v)

      // 输入 Token
      TextInput({ placeholder: '输入访问令牌' })
        .type(InputType.Password)
        .width('90%')
        .onChange(v => this.accessToken = v)

      // 查询按钮
      Button('搜索', { type: ButtonType.Capsule })
        .margin(10)
        .onClick(() => this.fetchUsers())

      // 列表展示
      if (this.isLoading) {
        Text('加载中...').fontSize(14)
      }

      if (this.userList.length > 0) {
        List({ space: 8 }) {
          ForEach(this.userList, (u: User) => {
            ListItem() {
              Text(`${u.login} (#${u.id})`)
                .fontSize(15)
            }.padding(6)
          })
        }
        .width('100%')
        .layoutWeight(1)
      }
    }
    .padding(15)
  }
}

当状态(@State)改变时,UI 将自动刷新 ✨——声明式范式核心!


三、网络请求:调用 API 获取用户数据

OpenHarmony 中使用 @kit.NetworkKit 发起 HTTP 请求:

import { http } from '@kit.NetworkKit';

封装 API 请求方法:

async fetchUsers() {
  this.isLoading = true
  const instance = http.createHttp()

  try {
    const resp = await instance.request(
      `https://api.gitcode.com/api/v5/search/users?q=${this.searchKeyword}&access_token=${this.accessToken}`,
      {
        method: http.RequestMethod.GET,
        header: { 'Content-Type': 'application/json' }
      }
    )

    if (resp.responseCode === 200) {
      const result = JSON.parse(resp.result as string)
      this.userList = result.map((item: any) => ({
        id: item.id,
        login: item.login
      }))
    } else {
      this.showError(`请求失败:code ${resp.responseCode}`)
    }
  } catch (err) {
    this.showError('网络异常,请稍后重试')
  } finally {
    this.isLoading = false
  }
}

补充提示框:

showError(msg: string) {
  AlertDialog.show({
    message: msg,
    confirm: { value: 'OK' }
  })
}

四、数据绑定与 UI 刷新机制说明

为什么 UI 会自动刷新?

原因是 ArkTS 中:

@State userList: Array<User> = []

@State 修饰的数据为 UI 响应式状态
修改状态 → 自动触发 build() 重新渲染 UI

无需手动 notify 或 setState 🎉

✔️ 输入搜索词与 Token
✔️ 点击搜索按钮
✔️ 异步请求 GitCode API
✔️ 自动解析 JSON
✔️ 列表展示用户登录名称与 ID
✔️ 错误提示处理完善

一套代码,UI 与数据实时联动 —— ArkTS 的强大之处!

总结

本篇重点介绍了 ArkTS 开发从 零到一 的关键路径:

  • 完成 ArkTS 项目与仿真器环境的搭建
  • 基于 ArkUI 声明式范式构建页面,掌握常用 UI 组件
  • 使用 @State 实现数据与界面的响应式绑定
  • 调用 NetworkKit 进行异步 HTTP 接口访问
  • 解析 JSON 数据并驱动界面自动刷新展示

通过实际案例,我们可以清晰地看到 OpenHarmony 的开发体验已全面拥抱现代化前端思维,“UI = 状态”让业务逻辑更加清晰、维护成本更低。再配合 ArkTS 的静态类型体系,能大幅降低运行时错误风险。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

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

更多推荐