HarmonOS 通用组件(Checkbox)

本文中 我们来说 通用组件中的 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组件 都会被分组到它下面
效果就是 我们点击全选 他们就会全部选中
在这里插入图片描述
我们取消全选 他们就会全部取消
在这里插入图片描述
然后 我们全部 取消 全选 也会自动取消

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/135438229
今日推荐