Estoy tratando de personalizar onChange en la entrada de formik para convertir el valor que es una cadena en un número, sin embargo, el comportamiento no cambia, el archivo console.log tampoco se muestra en la pantalla. Creo que no está sobrescribiendo el comportamiento predeterminado de Formik. ¿Qué estoy haciendo mal?
Entrada de control
<App.FormField name={'monthly_salary'}> {({field, form}) => ( <C.InputGroup> <C.InputLeftAddon bg={'primary.100'}> {'R$'} </C.InputLeftAddon> <Custom.Input variant={'secondary'} placeholder={t('form.placeholder_value_zero')} mask={'currency'} handleChange={(e) => { console.log(parseValue(e.currentTarget.value)) form.setFieldValue( field.name, parseValue(e.currentTarget.value) ) }} {...field} /> </C.InputGroup> )} </App.FormField>Entrada de mi componente personalizado
export const Input = ({mask, handleChange, ...props}: InputProps) => { const handleInput = useCallback( (e: React.FormEvent<HTMLInputElement>) => { if (mask === 'currency') { currency(e) } }, [mask] ) return ( <C.Input inputMode={'numeric'} onInput={handleInput} onChange={handleChange} {...props} /> ) }Puedes intentar algo así:
const onChange = (event: React.ChangeEvent<HTMLInputElement>) => { let newEvent = event; newEvent.target.value = "asd"; return field.onChange(newEvent); };No puedo reproducir tu código para probarlo, pero te sugiero que pruebes esto
onChange={(e) => { handleChange(e); console.log(parseInt(e.currentTarget.value)) form.setFieldValue( field.name, parseInt(e.currentTarget.value) ) }}en vez de
handleChange={(e) => { console.log(parseValue(e.currentTarget.value)) form.setFieldValue( field.name, parseValue(e.currentTarget.value) ) }}