Input

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

用法

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

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

Input 内部通过 hooks 维护一个稳定的 TextEditingController,因此必须用 createElement(Input, props) 以组件形式挂载,不能直接当函数调用。编辑细节见文本编辑指南

示例

前后缀与密码

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 提供字段名称;disabledreadOnly 都会让字段退出编辑序列。当前已知缺口:暂无占位文本(placeholder)与聚焦环样式。

最后更新: