Skyroc UI
输入

NumberInput

带递增/递减按钮的数值输入框组件

数值输入框(NumberInput)用于精确输入数值,内置递增/递减按钮,支持步进、范围限制、居中布局和自定义图标。

import { NumberInput } from '@skyroc/web-ui';
import type { NumberInputProps, NumberInputClassNames, NumberInputControlProps } from '@skyroc/web-ui';

何时使用

  • 需要用户输入精确数值时(数量、价格、年龄等)。
  • 需要通过按钮快速递增/递减调整数值时。
  • 需要限制输入范围(min/max)或设定步进值(step)时。
  • 如果只是普通文本输入,优先使用 Input。

基础用法

默认模式下,递增和递减按钮显示在输入框右侧。

Preview
Code
Loading...
<NumberInput placeholder="请输入数字" />

居中布局

设置 center 后,减号按钮移至左侧、加号按钮在右侧,输入值居中显示。

Preview
Code
Loading...
<NumberInput center />

自定义图标

通过 decrementIconincrementIcon 替换默认的加减号图标。

Preview
Code
Loading...
<NumberInput
  decrementIcon={<Icon icon="lucide:dollar-sign" />}
  incrementIcon={<Icon icon="lucide:percent" />}
/>

可清除

设置 clearable 后,hover 时显示清除按钮,点击可清空输入值。

Preview
Code
Loading...
<NumberInput clearable />

范围限制与步进

通过 minmax 限制输入范围,step 设置每次递增/递减的步进值。到达边界时对应按钮自动禁用。

<NumberInput min={0} max={100} step={5} />

受控用法

通过 value + onValueChange 实现受控模式;非受控模式使用 defaultValue

const [count, setCount] = useState(0);

<NumberInput value={count} onValueChange={setCount} />

键盘操作

  • ArrowUp — 递增
  • ArrowDown — 递减
  • Escape — 失焦

API

NumberInput

属性说明类型默认值
value受控模式的当前值number | string-
defaultValue非受控模式的默认值number | string-
onValueChange值变化时的回调(value: number | string | undefined) => void-
min允许的最小值,到达后递减按钮自动禁用number-
max允许的最大值,到达后递增按钮自动禁用number-
step每次递增/递减的步进值number1
center居中布局,减号在左、加号在右、输入居中booleanfalse
clearable是否显示清除按钮(hover 时出现)booleanfalse
disabled禁用状态boolean-
readOnly只读状态boolean-
placeholder输入框占位文本string-
decrementIcon自定义递减按钮图标ReactNode-
incrementIcon自定义递增按钮图标ReactNode-
leading输入框前置插槽内容ReactNode-
trailing输入框后置插槽内容(位于清除按钮和操作按钮之前)ReactNode-
controlProps透传给内部 input 控件的属性NumberInputControlProps-
size尺寸,影响高度、内边距和字号'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
className根容器 classClassValue-
classNames各 slot 的自定义 classNumberInputClassNames-

类型

NumberInputClassNames

NumberInput 各 slot 的自定义 class 配置。

字段类型说明
rootClassValue根容器 class。
controlClassValue输入框 class。
incrementClassValue递增按钮 class。
decrementClassValue递减按钮 class。
clearableClassValue清除按钮 class。

NumberInputControlProps

内部输入控件的属性。继承原生 input 属性(排除 value / defaultValue / min / max),并增加以下字段。

字段类型说明
valuenumber | string当前值。
defaultValuenumber | string默认值。
minnumber最小值。
maxnumber最大值。
centerboolean是否居中显示输入值。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸。
classNameClassValue输入框 class。

ClassValue

CSS 类名类型

string | null | undefined | Record<string, boolean> | ClassValue[]

On this page