HarmonyOS 二次封装一个输入框组件 实现禁用效果

文章详细描述了如何在Ets文件中创建一个带有值、提示和禁用功能的TextInput组件,以及如何通过状态管理实现组件间的交互,如禁用时隐藏输入框并捕获用户输入。
摘要由CSDN通过智能技术生成

我们创建一个 ets文件
在这里插入图片描述
然后 编写代码如下

@Component
export struct Input {

  @Link value:string;
  @Link placeholder:string;
  @Link disable:boolean;

  build() {
    Row(){
      TextInput({
        text: this.value,
        placeholder: this.placeholder?this.placeholder:""
      })
        .width("100%")
        .height("100%")
        .position({x: 0,y: 0})
        .focusable(!this.disable)
        .onChange((value)=>{
          this.value = value;
        })
      if(this.disable) {
        Column()
          .width("100%")
          .height("100%")
          .position({x: 0,y: 0})
          .zIndex(1)
      }
    }
    .width("100%")
    .height("100%")

  }
}

这里 我们要了三个属性 分别是
value 用来控制输入框的 Text属性 接收用户输入的值
placeholder 提示输入内容
disable 是否禁用

这里 我们里面的元素 高宽基本都是用的百分之百 宽度那我们组件外的那块元素
然后 我们 写了一个 TextInput组件 赋值上了 placeholder value
然后onChange 将用户最新输入的 value 赋值给我们组件绑定的 外面传入的value
然后 我们判断 disable 如果是禁用 就展示 Column
因为他们都设置了 position 相当于都是 绝对定位 然后 x y 位置都是0 我们Column的 zindex 高一些会把TextInput 挡住

然后 我们在 index.ets
中这样写

import { Input } from "../components/General"

@Entry
@Component
struct Dom {
  
  @State value:string = "";
  @State disable:boolean = true;
  @State placeholder:string = "请输入内容";

  build() {
    Column() {
      Row(){
        Input({
          placeholder: $placeholder,
          value: $value,
          disable: $disable
        })
          .width("100%")
          .height("100%")
      }
      .width(200)
      .height(30)
      Button("打印数据").onClick(()=>{
        console.log(this.value);
      })
      Button(this.disable?"启用":"禁用").onClick(()=>{
        this.disable = !this.disable
      })
    }
    .height('100%')
  }
}

我们导入了 Input 组件
然后 我们定义了这三个属性
然后 传入了 Input 组件中

运行代码 我们可以看到 我们点击输入框 是输入不了的
因为它被挡住了
在这里插入图片描述
然后 我们点击 启用 按钮
然后 我们点击输入框 进行键盘输入 就一切正常
在这里插入图片描述
然后 我们点击打印数据
可以看到 我们value 就能非常好的存入了 最新的用户输入的数据
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值