One UI

OneInput

OneInput 封装原生 input,同时保留明确的值控制边界。

查看代码收起代码
import { OneInput, type OneInputValueEvent } from '@geektech/one';

const input = new OneInput({ placeholder: '请输入名称', ariaLabel: '名称' });
input.on('input', (payload) => {
  const event = payload as OneInputValueEvent;
  console.log(event.value);
});

受控与非受控

传入 value 使用受控模式;监听 input 后用 setProps 接受新值。只传 defaultValue 时使用非受控模式,组件会维护内部值。

import { OneInput, type OneInputValueEvent } from '@geektech/one';

const controlled = new OneInput({ value: 'one', ariaLabel: '项目名称' });
controlled.on('input', (payload) => {
  const event = payload as OneInputValueEvent;
  controlled.setProps({ value: event.value });
});

const uncontrolled = new OneInput({ defaultValue: 'draft', ariaLabel: '草稿名称' });
uncontrolled.on('change', (payload) => {
  const event = payload as OneInputValueEvent;
  console.log(event.value, event.originalEvent);
});

原生状态

type、name、placeholder、disabled、readonly 和 required 直接映射到原生 input;invalid 同时添加状态类并设置 aria-invalid。

API

OneInput 属性与事件
名称签名说明
valuevalue?: string受控值;存在时输入后恢复最新 prop。
defaultValuedefaultValue?: string非受控初始值。
typetype?: string原生 input 类型。
namename?: string原生字段名。
placeholderplaceholder?: string输入提示。
sizesize?: OneComponentSize组件尺寸:'sm' | 'md' | 'lg',默认 md。
disableddisabled?: boolean原生禁用状态。
readonlyreadonly?: boolean原生只读状态。
requiredrequired?: boolean原生必填状态。
invalidinvalid?: boolean无效样式与 aria-invalid。
ariaLabelariaLabel?: string映射到 aria-label。
input(payload: OneInputValueEvent) => void每次原生 input 事件发出。
change(payload: OneInputValueEvent) => void每次原生 change 事件发出。