Лично я бы сделал так, чтобы onChange просто вызывал formik set field field тут же, а не использовал разные функции. Строго говоря, вы не хотите устанавливать такое значение, потому что каждый повторный рендеринг устанавливает значение заново.
Я бы также рекомендовал просматривать пользовательские входы formik с помощью ловушки useField - https://jaredpalmer.com/formik/docs/api/useField . Это позволит вам написать небольшую оболочку вокруг стороннего компонента и formik. Заметив, что вы использовали компонент, основанный на классах, вы, возможно, захотите сделать небольшое чтение в ловушках реагирования, прежде чем приступить к использованию useField.
Пример документа:
const MyTextField = ({ label, ...props }) => {
const [field, meta, helpers] = useField(props);
return (
<>
<label>
{label}
<input {...field} {...props} />
</label>
{meta.touched && meta.error ? (
<div className='error'>{meta.error}</div>
) : null}
</>
);
};