当前位置: 首页 > news >正文

ArkTS 入门实战:构建一个交互式信息展示页面

一、代码核心功能概览

这段代码实现了以下功能:

  1. 信息输入:用户可以在文本框中输入任意内容。
  2. 状态切换:通过一个按钮来切换布尔状态(开 / 关)。
  3. 模式切换:通过一个开关组件来切换 “夜览模式”,改变整个页面的背景色。
  4. 实时反馈:页面会实时显示用户输入的内容以及两个开关的当前状态。

二、核心知识点拆解

1. 组件定义:@Entry@Component

typescript

运行

@Entry @Component struct Examp1 { // ... }
  • @Component: 这是一个装饰器,用于声明一个自定义组件。struct Examp1由此成为一个可复用的 UI 单元。每个组件都必须实现build()方法来描述其 UI 结构。
  • @Entry: 这同样是一个装饰器,用于标记当前组件作为应用的入口组件。一个应用只能有一个@Entry组件,它是 UI 界面的起点。
2. 状态管理:@State

typescript

运行

@State msg:string="" @State isOpen:boolean=false @State iskai:boolean=false
  • @State: 这是 ArkTS 中最核心的状态管理装饰器。被它标记的变量(如msg,isOpen,iskai)是组件内部的状态数据。
  • 核心特性:当这些状态变量的值发生变化时,ArkUI 框架会自动检测到变化,并重新渲染(rebuild)依赖这些变量的 UI 部分。这就是所谓的 “状态驱动 UI 更新”。
3. UI 构建:build()方法与布局组件

typescript

运行

build() { Column({space:60}){ // ... Row() { // ... } } }
  • build()方法: 所有@Component都必须实现此方法。它是用来描述 UI 结构的地方,返回一个组件树。
  • 布局组件:
    • Column: 垂直布局容器,子组件从上到下依次排列。{space:60}设置了子组件之间的垂直间距为 60vp。
    • Row: 水平布局容器,子组件从左到右依次排列。
    • 通过嵌套ColumnRow,我们可以构建出复杂的页面布局。
4. 基础 UI 组件详解
  • Text: 用于显示文本内容。可以通过.fontSize(),.width(),.textAlign()等方法设置样式。
  • TextInput: 用于用户输入文本。
    • placeholder: 设置输入框为空时的提示文字。
    • .onChange(): 输入内容变化时的回调事件,我们在这里更新msg状态变量。
  • Button: 按钮组件,响应用户点击。
    • 按钮的标题使用了条件渲染this.isOpen ? "开关已打开" : "开关已关闭",根据isOpen的状态动态显示不同文本。
    • .onClick(): 点击事件的回调,我们在这里取反isOpen的值。
  • Toggle: 开关组件,这里使用了ToggleType.Switch样式。
    • .onChange(): 开关状态变化时的回调,我们在这里取反iskai的值。
5. 数据绑定与条件渲染

ArkTS 采用声明式 UI 范式,UI 是状态数据的直观反映。

  • 数据绑定:

    • TextInputtext属性绑定到this.msg
    • Text的内容直接绑定到this.msg,this.isOpen,this.iskai
    • ColumnbackgroundColor绑定到this.iskai,实现了夜览模式的背景色切换。
  • 条件渲染:

    • 三元表达式是实现条件渲染的常用方式:
      • this.isOpen ? "开关已打开" : "开关已关闭"
      • this.iskai ? 0xd3d3d3 : Color.White
    • 当状态变量变化时,这些表达式的结果也会随之变化,从而触发 UI 的更新。

三、完整代码逻辑解析

  1. 初始化: 页面加载时,msg为空字符串,isOpeniskai均为false
  2. 输入交互: 用户在TextInput中输入文字,onChange事件触发,msg变量被更新。绑定了msgText组件会自动刷新,显示最新输入的内容。
  3. 按钮交互: 用户点击按钮,onClick事件触发,isOpen变量取反。绑定了isOpen的按钮标题和下方的状态文本会同步更新。
  4. 开关交互: 用户切换Toggle开关,onChange事件触发,iskai变量取反。绑定了iskai的背景色和状态文本会同步更新,实现 “夜览模式” 的切换。
http://www.cnnetsun.cn/news/3108053.html

相关文章:

  • 降重后论文逻辑全乱,有哪些真正值得拥有的的降AIGC平台推荐?
  • 2026揭阳黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • Photon光影包终极指南:为Minecraft打造电影级视觉体验的完整教程
  • [AI][编程模型]Larrabee 介绍
  • 提升办公效率|OpenClaw 本地部署全套排错与安装步骤(包含安装包)
  • Three.js 模型视图教程
  • 人工智能浪潮来袭,OverDrive的Libby应用如何应对书籍内容冲击?
  • 生成式引擎优化GEO哪个解决方案好
  • PEO113-PVP44-PS45三嵌段共聚物PS45-PVP44-PEO113
  • 数字控制振荡器(DCO)原理与LTC6903应用设计
  • CodeAgent 技术架构简易介绍
  • 工作中用AI省时又省力?小心“影子AI”导致数据泄露!
  • 拒绝环路+负载分担!MSTP实战配置
  • 拯救你的数字书库:novel-downloader小说下载器完整使用指南
  • 67|技能治理:版本、禁用回滚与共享策略
  • AI浪潮下SaaS行业震荡:估值重估、企业内卷,未来路在何方?
  • MySQL(十八)分库分表详解(介绍、Mycat概述安装、Mycat入门、Mycat配置、Mycat分片、Mycat管理及监控)
  • 这是关于选择器
  • TikTokDownload Cookie自动获取:告别手动烦恼的10分钟终极指南
  • 如何通过HWInfo插件实现FanControl智能风扇控制:完整配置指南
  • 山西干冰医用冷藏
  • Three.js 精灵标签教程
  • 如何3分钟搞定QQ空间数据备份:GetQzonehistory智能导出工具完整指南
  • Three.js 变换 Box3教程
  • 基于Agentic AI的降维算法自动化调优与可视化评估实践
  • TELAPA框架:基于策略档案与共享潜空间的持续强化学习实践
  • 8位MCU安全连接云端:PIC18F2620与A5000加密芯片实践
  • Anthropic Claude‘归零层’技术解析:语义校验环的架构级移除
  • GPT-4的‘2%激活‘真相:MoE稀疏推理原理与工程实践
  • 期权量化交易系列教程(四):经典方向性策略——备兑、保护性看跌与价差组合