HarmonyOS开发组件基础

个人简介

👨‍💻‍个人主页: 魔术师

📖学习方向: 主攻前端方向,正逐渐往全栈发展

🚴个人状态: 研发工程师,现效力于政务服务网事业

🇨🇳人生格言: "心有多大,舞台就有多大。"

📚推荐学习: 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒Three.js 🍇鸿蒙开发

🪧使用备注:仅供学习交流 严禁用于商业用途 ,若发现侵权内容请及时联系作者

📤更新进度:持续更新内容

🤙个人名片:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧

HarmonyOS开发组件基础目录


文章目录


组件基础

1. 组件-什么是ArkTS

ArkTS是HarmonyOS优选的主力应用开发语言。

ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。

2. 基础-组件结构

ArkTS通过装饰器 @Component 和 @Entry 装饰 struct 关键字声明的数据结构,构成一个自定义组件。

自定义组件中提供了一个 build 函数,开发者需在该函数内以链式调用的方式进行基本的 UI 描述,UI 描述的方法请参考 UI 描述规范。

页面组件

javascript 复制代码
@Entry
@Component
struct Index {
  // 工程默认显示 `Index` 页面组件
  // build 是声明UI的位置
  build() {
    Text('页面组件')
  }
}

自定义组件

javascript 复制代码
// 定义 `Footer` 组件
@Component
struct Footer {
  build() {
    Text('自定义组件')
  }
}

@Entry
@Component
struct Index {
  build() {
    Column(){
      // 使用 `Footer` 组件
      Footer()
    }
  }
}

注意: 为了更好维护,自定义组件通常会新建一个文件 Footer.ets,通过模块化语法导出导入(默认|按需)使用。

3. 基础-系统组件(ArkUI)

常用系统组件 Text Column Row Button TextInput 更多组件

  • Text 文本组件
  • Column 列组件,纵向排列,Flex布局主轴是Y
  • Row 行组件,横向向排列,Flex布局主轴是X
  • Button 按钮组件
  • InputText 输入框组件

实现一个简易登录界面:

javascript 复制代码
@Entry
@Component
struct Index {
  @State
  phone:string = '18852638009'
  yzm:string= 'ws34'
  build() {
    Column(){
      // 手机号
      Row(){
        Text('手机号:')
        TextInput({text:this.phone, placeholder: '请输入手机号'})
          .placeholderColor('red')
      }
      // 验证码
      Row(){
        Text('验证码:')
        TextInput({text:this.yzm, placeholder: '请输入验证码'})
          .maxLength(4)
      }
      // 验证码
      Row(){
        Text('忘记密码')
          .fontColor('#FF2B71F3')
      }
    // 登录,注册按钮
      Row(){
        Button('注册')
          .backgroundColor('#c3c4c5')
          .onClick(()=>{
            console.log('注册')
          })
        Button('登录')
          .onClick(()=>{
            console.log('登录')
          })
      }
    }
    .width('100%')
    .height('100%')
    .backgroundColor('#ffececec')
  }

}

注意: ArkUI 组件一般都是 Flex 模式,大部分布局可以由行和列组成。

4. 练习案例

实现登录表单数据收集、重置、模拟提交。

javascript 复制代码
import promptAction from '@ohos.promptAction'
@Entry
@Component
struct Index {

  @State
  mobile: string = ''
  @State
  code: string = ''

  build() {
    Column(){
      Row(){
        Text('手机号')
        TextInput({ text: this.mobile })
          .onChange((value)=>this.mobile = value)
      }
      Row(){
        Text('验证码')
        TextInput({ text: this.code })
          .onChange((value)=>this.code = value)
      }
      Row(){
        Button('重置')
          .backgroundColor('#ccc')
          .onClick(()=>{
            this.mobile = ''
            this.code = ''
          })
        Button('登录')
          .onClick(()=>{
            if (this.mobile && this.code) {
              promptAction.showToast({ message: `${this.mobile} 登录成功` })
            } else {
              promptAction.showToast({ message: `请输入手机号或验证码` })
            }
          })
      }
    }
  }
}
相关推荐
垆边人似月.3 小时前
华为机试题 :最大数
c++·算法·华为
大雷神4 小时前
用鸿蒙开发助手推进《3D种植》鸿蒙版与 Flame 库适配
3d·华为·harmonyos
轻口味4 小时前
HarmonyOS 7 新特性7:闪控窗深潜——六态流转、错误码二维查表与730ms双通道滞后真机实测
华为·harmonyos·鸿蒙·floatview
程序猿追4 小时前
从 24 到 25 字节:compactstr4cj 的 CJMP 鸿蒙适配与 UTF-8 实测
华为·harmonyos
HarmonyOS_SDK5 小时前
【HarmonyOS API 26 】数字盾服务2.0:硬件级安全的随身虚拟U盾
harmonyos
2501_919749037 小时前
华为鸿蒙免费日记本—小羊日记
华为·harmonyos·鸿蒙
m0_738185827 小时前
Flutter 鸿蒙化实战:rive 适配 OpenHarmony,Rive 动画
flutter·华为·harmonyos·鸿蒙
zd2005727 小时前
我给x86版本开源鸿蒙系统装上了 Homebrew,还塞了整个 Node 和 opencode 进去
华为·开源·harmonyos
song5017 小时前
React Native for OpenHarmony 实战:三方库 react-native-popup-menu 的鸿蒙化适配指南
css·深度学习·react native·react.js·transformer·harmonyos
打工仔折腾 AI8 小时前
鸿蒙版ToDesk远控实测:蓝牙键鼠、双模式鼠标与跨端剪贴板怎么用
后端·python·华为·性能优化·计算机外设·harmonyos·ai agent 实战