Estoy usando ganchos de reacción y quiero lograr lo siguiente, reemplazando un punto con una coma mientras un usuario está escribiendo en el cuadro de texto de entrada. A continuación se muestra mi código:
const formatDecimal = (value: number) => Number(value).toLocaleString('de-DE'); const onChange = useCallback( event => { const { value } = event.target; // @ts-ignore const newValue = formatDecimal(value) setFieldValue(name, newValue); }, [setFieldValue, name], );No funciona como se esperaba, solo no muestra la coma, cada vez que escribo el punto.
Puede usar la función regex y String#replace
const replaceDotWithComma = str => { return str.replace(/\./g, ','); } console.log(replaceDotWithComma('12.567')) console.log(replaceDotWithComma('30.6'))Esto es para el campo de entrada, puede hacer lo contrario antes de guardar el valor como flotante.
El problema con la región diferente, la visualización del número puede cambiar .toLocaleString('de-DE') por lo que, en el mejor de los casos, debería usar la biblioteca para hacerlo.