Input

单行文本输入。下方预览由 pingo 引擎实时渲染——点击后可以真正输入、选中、删除,并跟随站点主题切换明暗。

用法

import { Input } from "@dopejs/pingo-ui";

root.render(
  <Input semanticLabel="邮箱" width={320} onValueChange={(value) => console.log(value)} />,
);

Input 内部通过 hooks 维护一个稳定的 TextEditingController,因此必须用 <Input … /> 以元素形式挂载,不能直接当函数调用——直接调用会以「hooks may only run in a function component」失败。编辑细节见文本编辑指南。

示例

前后缀与密码

prefix/suffix 插槽可以放图标或单位;password 开启掩码输入;disabled 禁用整个字段。

受控用法

传入自己的 controller 即进入受控模式,此时 value 只作为初始值被忽略,由调用方持有控制器并跨渲染保持同一实例。

Props

Prop 类型 默认值 说明
value string "" 非受控用法的初始值;设置 controller 后被忽略
onValueChange (value: string) => void — 每次编辑事务应用后回调最新值
controller TextEditingController — 高级逃生舱:调用方持有的持久控制器
onTransaction (transaction: EditTransaction) => void — 每次编辑事务的原始回调
onSubmit () => void — 提交(回车)回调
disabled boolean false 禁用态:不接受焦点,也不显示光标
readOnly boolean false 只读态:仍可聚焦并选中复制
password boolean false 掩码输入
inputMode "decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" "text" 软键盘布局提示
className string — 追加在组件类名之后
width number — 固定宽度(px)
semanticLabel string — 无障碍名称
prefix PingoNode — 前置装饰,如图标或货币符号
suffix PingoNode — 后置装饰,如单位或清除按钮

无障碍

通过 semanticLabel 提供字段名称;disabled 与 readOnly 都会让字段退出编辑序列。当前已知缺口:暂无占位文本(placeholder)与聚焦环样式。

最后更新: