《鸿蒙HarmonyOS 5.0开发教程》基础篇08:渲染控制

399 阅读2分钟

我们将 ArkTS 中针对组件和数据的渲染控制主要分为 3 种情况:

  1. 文本渲染:将数据以普通文本的形式进行渲染;
  2. 条件渲染:通过条件判断的方式来控制组件或文本的条件渲染;
  3. 循环渲染:通过循环数组的方式来实现组件的循环渲染;

一、文本渲染

文本渲染,就是将数据以普通文本的形式在 Text 组件中进行渲染。

唯一需要注意的是:Text 组件中只能渲染字符串类型,如果数据不是字符串类型,就需要转换为字符串类型。常用的转换方式主要有以下几种:

  • 模板字符串:将数据以模板字符串的形式进行渲染,
  • .toString():将数据转换为字符串类型后进行渲染;
  • JSON.stringify():将引用类型的数据转换为 JSON 格式的字符串进行渲染;

示例代码:

@Entry
@Component
struct MyPage {
  @State name: string = '张三';
  @State count: number = 100;
  @State friends: string[] = ["韩梅梅", "李华"]

  build() {
    Column() {
      Text(`你好,我的名字是${this.name}。`)
      Text(this.count.toString())
      Text(JSON.stringify(this.friends))
    }
  }
}

代码预览效果如下:

image-20250120182432917

二、条件渲染

在 ArkTS 中,条件渲染的方式主要有 2 种:

  1. if 语句:主要用于对组件进行条件渲染;
  2. 三目运算符:主要用于对数据进行条件渲染;

1、if语句

ArkTS中提供了if、else if 和 else 三种条件语句来实现组件的条件渲染,详细使用可以查阅官方文档

示例代码:

@Entry
@Component
struct MyPage {
  @State score: number = 88;
  build() {
    Column() {
      if (this.score >= 90) {
        Text('优')
      } else if (this.score >= 60) {
        Text('良')
      } else {
        Text('差')
      }
    }
  }
}

2、三目运算符

if 语法主要是在组件之间进行条件渲染,而组件内数据的条件渲染,就需要通过三目运算符来实现。

示例代码:

@Entry
@Component
struct MyPage {
  @State age: number = 20;

  build() {
    Column() {
      Text(this.age >= 18 ? "已成年" : "未成年")
    }
  }
}

三、循环渲染

ArkTS 中提供了 ForEach 接口来基于数组类型数据来进行循环渲染,且需要与容器组件配合使用,详细使用可以查阅官方文档

@Entry
@Component
struct MyPage {
  @State friends: string[] = ["韩梅梅", "李华"]

  build() {
    Column() {
      // 数组循环渲染
      ForEach(this.friends, (item: string, index: number) => {
        Text(item) // 每一轮循环都创建渲染一个Text组件
      }, (item: string) => item)
    }
  }
}

ForEach 接收 3 个参数,分别是:

  1. 数据源:ForEach 需要遍历的数组;
  2. 组件生成函数:为数组中的每个元素创建对应的UI组件;
    • item 参数:数组中的数据项。
    • index 参数(可选):数组中的数据项索引(下标)。
  3. 键值生成函数:为数据源的每个数组项生成唯一且持久的键值。函数返回值就是我们自定义的键值生成规则。
    • item 参数:数组中的数据项。
    • index 参数(可选):数组中的数据项索引(下标)。