В соответствии с моим предложением использовать стороннюю библиотеку для интеграции в компонент Textfield;Вы можете использовать библиотеку response-number-format в качестве inputProp для текстового поля. Это работает, потому что средство форматирования чисел, предлагаемое вышеупомянутой библиотекой, имеет decimalSeparator
проп, который по умолчанию равен одной строке символов "."
Пользовательский форматер чисел будет выглядеть следующим образом:
import NumberFormat from 'react-number-format';
interface NumberFormatCustomProps {
inputRef: (instance: NumberFormat | null) => void;
onChange: (event: { target: { value: string } }) => void;
}
function NumberFormatCustom(props: NumberFormatCustomProps) {
const { inputRef, onChange, ...other } = props;
return (
<NumberFormat
{...other}
getInputRef={inputRef}
onValueChange={values => {
onChange({
target: {
value: values.value
}
});
}}
isNumericString
/>
);
}
И его можно использовать в числовом текстовом поле, например:
<TextField
label="react-number-format"
value={values.numberformat}
onChange={handleChange("numberformat")}
id="formatted-numberformat-input"
InputProps={{
inputComponent: NumberFormatCustom as any
}}
type="number"
/>
. Для полностью работающего примера, посмотрите эту песочницу .