Компонент InputNumber предназначен для ввода числовых значений с поддержкой различных ограничений, шагов, форматов отображения и обработки событий. Он является частью библиотеки Ant Design для JavaScript и тесно интегрирован с React.
Для использования компонента необходимо импортировать его из библиотеки:
import { InputNumber } from 'antd';
Простейший пример:
<InputNumber />
В этом случае компонент отобразит обычное поле ввода с кнопками увеличения и уменьшения значения.
Пример с ограничением и шагом:
<InputNumber min={0} max={100} step={5} defaultValue={10} />
Здесь пользователь может выбрать значения от 0 до 100 с шагом 5.
formatter позволяет изменить отображение значения, например, добавить валютный символ:
<InputNumber
min={0}
defaultValue={1000}
formatter={value => `$ ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')}
parser={value => value.replace(/\$\s?|(,*)/g, '')}
/>
formatter изменяет отображение числа для удобства
визуализации.parser преобразует введённый текст обратно в
число.Компонент поддерживает несколько событий:
info указывает направление (‘up’
или ‘down’).Пример:
<InputNumber
min={0}
max={10}
onCha nge={value => console.log('Изменено значение:', value)}
onS tep={(value, info) => console.log(info, value)}
/>
Свойство precision позволяет ограничить количество знаков после запятой:
<InputNumber
min={0}
max={10}
step={0.1}
precision={2}
/>
При этом введённые пользователем значения автоматически округляются до двух знаков после запятой.
disabled={true} компонент становится
недоступным для редактирования и клика мышью.InputNumber хорошо интегрируется с состоянием React. Пример контролируемого компонента:
import { useState } from 'react';
import { InputNumber } from 'antd';
const ControlledInputNumber = () => {
const [value, setValue] = useState(5);
return (
<InputNumber
min={0}
max={20}
value={value}
onCha nge={setValue}
/>
);
};
Изменение состояния через onChange позволяет
синхронизировать значение с другими элементами интерфейса.
InputNumber легко интегрируется с компонентом Form.Item, поддерживая валидацию и управление формой:
import { Form, InputNumber, Button } from 'antd';
<Form>
<Form.Item
label="Возраст"
name="age"
rules={[{ required: true, message: 'Введите возраст' }]}
>
<InputNumber min={0} max={120} />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">Отправить</Button>
</Form.Item>
</Form>
В этом примере компонент участвует в валидации формы и автоматически передаёт значение при отправке.
'small', 'middle' (по умолчанию) и
'large'.Пример:
<InputNumber size="large" style={{ width: 200 }} defaultValue={50} />
',' для европейского формата).true (по умолчанию),
позволяет изменять значение с клавиатуры стрелками.<InputNumber decimalSeparator="," />
<InputNumber min={0} max={10} step={2} stepStrictly />
Компонент InputNumber обеспечивает удобный и гибкий ввод числовых значений с возможностью форматирования, контроля диапазона, интеграции с формами и управлением состоянием React. Правильное использование его свойств позволяет создавать интерфейсы с высокой точностью ввода и удобством для пользователя.