HarmonyOS 鸿蒙Next组件封装之输入框

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next组件封装之输入框

组件封装

输入框在项目中经常出现,特别是在办公系统中更是经常使用,为了统一样式和方便使用通常我们会封装。

代码实例

import { TableData } from '../viewmodel/WaitDeal'
import { emitter } from '@kit.BasicServicesKit';

@Component
export struct TXTInPutComponent {
  @Prop content: string = "";
  tips: string = ""
  onClickOK?: () => void;
  @Consume dataShow: Set<TableData>;
  @State text:string=""
  aboutToAppear(): void {

  }

  build() {
    Stack({ alignContent: Alignment.Center }) {
      Column() {

        Row() {
          Text(this.tips)
            .fontSize(14)
            .fontColor('#999999')
            .textAlign(TextAlign.Start)
            .margin({ left: 15 })
        }.width('100%')

        Row() {
          TextInput({ placeholder: '请输入' + this.tips, text:this.content})
            .textAlign(TextAlign.Start)
            .borderRadius(0)
            .margin({ left: 16,top:8 })
            .onChange((value: string) => {
              this.text = value
            })
            .onEditChange((isEditing: boolean)=>{
                  if(!isEditing)
                  {
                    console.info("请输入", this.text);

                    Array.from(this.dataShow.entries()).forEach((item) => {
                      if (item[0].name == this.tips) {
                        item[0].field_value =  this.text;
                      }
                    })

                    if (this.onClickOK !== undefined) {
                      this.onClickOK();
                    }
                  }
            })
            /*
            .onSubmit((enterKey: EnterKeyType, event: SubmitEvent) => {
                console.info("请输入", this.text);

                Array.from(this.dataShow.entries()).forEach((item) => {
                  if (item[0].name == this.tips) {
                    item[0].field_value =  this.text;
                  }
                })

            if (this.onClickOK !== undefined) {
              this.onClickOK();
            }
          })
          */
        }.width('100%')


        Divider()
          .strokeWidth(2)
          .color('#eeeeee')
      }
    }.width('100')


  }
}

更多关于HarmonyOS 鸿蒙Next组件封装之输入框的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

老师您好,我是华为的工作人员,我们一直在关注技术领域的优秀创作者,注意到您在平台分享多篇鸿蒙内容,今天和您联系,是想和您探讨一下Harmony os next技术学习资源创作合作机会,给予创作者激励,如有兴趣请与我联系(VX:ruixinzzz)。

更多关于HarmonyOS 鸿蒙Next组件封装之输入框的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS中的输入框组件封装主要涉及TextInputTextField两个核心组件。TextInput用于单行文本输入,TextField则支持多行文本输入。开发者可以通过设置属性来控制输入框的行为和外观,如placeholder用于显示提示文本,maxLength限制输入字符数,type指定输入类型(如数字、密码等)。事件监听方面,onChange用于捕获输入内容变化,onSubmit处理提交事件。样式定制可通过style属性实现,支持设置字体大小、颜色、边框等。组件封装时,建议将常用属性和事件抽象为统一接口,便于复用和维护。

在HarmonyOS鸿蒙Next中,组件封装是提升开发效率和代码复用性的关键。输入框(TextInput)作为常用组件,可通过自定义封装实现统一风格和功能扩展。首先,创建一个新的自定义组件类,继承自TextInput,并在其中定义默认样式、输入验证、事件监听等逻辑。通过属性配置,开发者可以灵活调整输入框的行为和外观。封装后的输入框组件可直接在项目中复用,减少重复代码,提升开发效率。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!