在 HarmonyOS6 的应用开发生态中,输入框是几乎每个应用都离不开的基础交互组件。然而原生的 TextInput 组件功能相对单一,面对真实业务场景中密码显隐、格式化、多类型适配等需求时往往力不从心。经过沉淀,RcInput 组件从零到一完整地封装了一套功能丰富、类型安全、高度可定制的输入框解决方案。本文将深入剖析其核心架构思想与类型系统的设计逻辑。
部分案例演示


一、组件整体架构概览
1.1 文件组织结构
RcInput 组件采用职责分离的双文件架构,核心实现分布在两个文件中:
formComponents/RcInput/
├── index.ets # 组件主体实现(渲染逻辑 + 状态管理 + 事件处理)
├── index.type.ets # 类型定义(所有 type / interface 声明)
└── README.md # 使用文档
这种结构的好处是:类型定义与渲染实现完全解耦,消费方可以单独引入类型用于 TypeScript 推断,而不必加载整个组件的实现代码。
1.2 组件声明与依赖注入
import {
RcInputType,
RcInputSize,
RcInputAlign,
RcInputEnterKeyType,
RcInputClearTrigger,
RcInputFormatter,
RcInputParser
} from './index.type'
import { RcStringNumber } from '../../model/Global.type'
import { getSizeByUnit } from '../../utils/utils'
import { RcIcon } from '../../basicsComponents/RcIcon/index'
import { RcIconDataType } from '../../basicsComponents/RcIcon/index.type'
@ComponentV2
export struct RcInput {
// ...
}
组件通过 @ComponentV2 装饰器声明,这是 HarmonyOS6 ArkTS 新一代组件模型。与旧版 @Component 相比,@ComponentV2 配合 @Param、@Local 等新装饰器实现了更精细的响应式粒度控制,避免了父子组件间不必要的全量重渲染。
提示:@ComponentV2 + @Param + @Local 是 HarmonyOS6 推荐的新状态管理范式,@Param 对应外部传入属性,@Local 对应组件内部私有状态。
1.3 参数装饰器设计
组件参数分为两类,设计非常清晰:
| 装饰器 | 用途 | 示例 |
|---|---|---|
| @Param @Require | 必传的外部属性,父组件必须提供 | value: string |
| @Param | 可选的外部属性,有默认值 | disabled: boolean = false |
| @Local | 组件内部私有状态,不对外暴露 |








