Я сделал базовую демо-версию , используя пользовательский компонент ввода. Formik не имеет встроенных опций для этого, поэтому, к сожалению, вам нужно создать свои собственные полевые компоненты для интеграции с реквизитами Formik и обойти логику, которая не будет отображать проверки, если форма не затронута.
const Input = ({ field, form }) => {
useEffect(() => {
form.validateForm();
}, []);
return (
<div>
<input
style={{
border: form.errors[field.name] ? "1px solid red" : "1px solid #ccc"
}}
name={field.name}
value={field.value}
onChange={field.onChange}
/>
{form.errors[field.name] && (
<span style={{ color: "red" }}>{form.errors[field.name]}</span>
)}
</div>
);
};
И затем передайте это как component
реквизит на вашем <Field/>
.
Formik действительно обеспечивает isInitialValid
реквизит, который вы можете установить на false
на основном компоненте Formik, но опять же библиотека TextFields выВы используете не будет ничего отображать без touched
проп.