HarmonOS 通用组件(Checkbox)

news/2024/10/22 12:15:28/

本文中 我们来说 通用组件中的 Checkbox
我们先搭起一个基本的架子组件

@Entry
@Component
struct Index {build() {Row() {Column() {Row() {}}.width('100%')}.height('100%')}
}

我们可以在Row 行组件中加入代码

Checkbox({name: "age"})
Text("年龄")

这样 就做出了一个 选择框 和一个 文本的效果
在这里插入图片描述
我们可以点击勾选 和 取消勾选
在这里插入图片描述
然后 我们可以监听它的状态改变
我们这样写

Checkbox({name: "age"}).onChange((value) => {console.log("状态value"+value);
})
Text("年龄")

此时 我们勾选/取消勾选 都会触发 onChange
这个方法接受一个参数 记录选择状态 true 选中 false 取消选中
在这里插入图片描述
在实际开发中 我们可以通过这种方式记录

@Entry
@Component
struct Index {@State Arr:Array<string> = [];build() {Row() {Column() {ForEach(this.Arr,(item)=>{Text(item)})Row() {Checkbox({name: "health"}).onChange((value) => {if(value) {this.Arr.push("健康")}else{this.Arr = this.Arr.filter(item => item !== "健康");}})Text("健康")Checkbox({name: "longevity"}).onChange((value) => {if(value) {this.Arr.push("长寿")}else{this.Arr = this.Arr.filter(item => item !== "长寿");}})Text("长寿")}}.width('100%')}.height('100%')}
}

我们设置了两个Checkbox组件 然后 监听他们的 onChange
通过value判断 是否选中 或者 取消选择
如果是选中 将 内容 push到数组中 否则 从数组中过滤出去
最上面 用 ForEach 循环渲染了数组内容

这样 我们选择 就会将内容加入数组中
在这里插入图片描述
被我们取消的内容 就会从数组中移除
在这里插入图片描述
然后 我们还可以做一个分组
我们这样写

@Entry
@Component
struct Index {build() {Row() {Column() {Row() {CheckboxGroup({ group: "hobby" })Text("全选")}Row() {Checkbox({ group: "hobby" })Text("电子游戏")}Row() {Checkbox({ group: "hobby" })Text("运动")}Row() {Checkbox({ group: "hobby" })Text("健身")}}.width('100%')}.height('100%')}
}

CheckboxGroup 会声明出一个组 且 它是作为全选按钮出现在页面上的
然后 group属性 用来声明组名
所有 组名 group属性与它相同的 Checkbox组件 都会被分组到它下面
效果就是 我们点击全选 他们就会全部选中
在这里插入图片描述
我们取消全选 他们就会全部取消
在这里插入图片描述
然后 我们全部 取消 全选 也会自动取消


http://www.ppmy.cn/news/1295611.html

相关文章

window使用cpolar实现内网穿透

文章目录 cpolar下载和安装启动和配置cpolar卸载 cpolar下载和安装 进入spolar官网&#xff0c;完成注册&#xff0c;下载相应的cploar版本解压和运行安装文件 配置安装路径&#xff0c;然后选择next&#xff0c;完成即可 启动和配置 点击首页的快捷图标打开网页&#xf…

MySQL-存储引擎

简介&#xff1a;存储引擎是存储数据&#xff0c;建立索引&#xff0c;更新/查询数据等技术的实现方式。存储引擎是基于表的&#xff0c;而不是基于库的&#xff0c; (同一个数据库的不同表可以选择不同的存储引擎) 所以存储引擎也可被称为表类型。 我们输入 SHOW CREATE TAB…

编译原理第二次小班课

写给入门者的LLVM介绍 - 知乎 (zhihu.com) 代码优化与LLVM IR pass | Kiprey’s Blog A Tour to LLVM IR&#xff08;上&#xff09; - 知乎 (zhihu.com) 第5章 LLVM中间表示 — Getting Started with LLVM Core Libraries 文档 (getting-started-with-llvm-core-libraries-zh-…

FastApi-快速入门1

FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;使用 Python 3.8 并基于标准的 Python 类型提示。 关键特性: 快速&#xff1a;可与 NodeJS 和 Go 并肩的极高性能&#xff08;归功于 Starlette 和 Pydantic&#xff09;。最快…

Spring Boot 基础知识点1 (含面试题1)

Spring Boot 是一款基于 Spring 框架的开源应用程序开发工具&#xff0c;它旨在简化 Spring 应用程序的配置和开发过程。Spring Boot 提供了一种简单的方式来创建可独立运行的、生产级别的应用程序&#xff0c;并在需要时进行部署。Spring Boot 在微服务架构和云计算环境下得到…

江科大STM32

目录 STM32简介 STM32简介 我们主要学习的就是STM32的外设。 NVIC&#xff1a;内核里面用于管理中断的设备&#xff0c;比如配置中断优先级这些东西SysTick&#xff1a;内核里面的定时器&#xff0c;主要用来给操作系统提供定时服务的&#xff0c;STM32是可以加入操作系统的&am…

HTML5-简单文件操作

文件操作 简介 概念&#xff1a;可以通过file类型的input控件或者拖放的方式选择文件进行操作 语法格式&#xff1a; <input type"file" multiple>属性 multiple&#xff1a;表示是否选择多个文件 accept&#xff1a;用于设置文件的过滤类型&#xff08;MI…

uniapp 文字超出多少字,显示收起全文按钮效果demo(整理)

收起展开 <template><view class"font30 color000 mL30 mR30"><text :class"showFullText ? : clamp-text">{{ text }}</text><view v-if"showToggleBtn && text.length > 42" click"toggleShowFu…