Formik сбрасывает форму из-за enableReinitialize
initialValues получаю из redux, enableReinitalize нужен чтоб эти значения обновлялись Как мне сделать так, чтоб ошибки валидации которые я получаю после submit оставались? Сейчас же они пропадают если как-то поменять значения формы
const userData = useSelector((state: RootState) => state.users.userData);
const initialValues = {
docNumber: userData.docNumber,
lastName: userData.lastName,
firstName: userData.firstName,
middleName: userData.middleName,
customsCode: userData.customsCode,
customsOffice: userData.customsOffice,
subdivision: userData.subdivision,
position: userData.position,
authorities: userData.authorities,
login: userData.login,
password: userData.password,
repeatPassword: userData.repeatPassword,
passwordNeedChange: userData.passwordNeedChange,
ip1: userData.ip1,
ip2: userData.ip2,
ip3: userData.ip3,
mac1: userData.mac1,
mac2: userData.mac2,
mac3: userData.mac3,
dismissDate: userData.dismissDate,
blocked: userData.blocked,
activated: userData.activated,
deleted: userData.deleted,
remark: userData.remark,
};
const handleUserInputChange = (
event:
| ChangeEvent<HTMLTextAreaElement | HTMLInputElement>
| ChangeEvent<{ name?: string | undefined; value: unknown }>
) =>
changeUserData(
event.target.name as KeyofUsersTableType,
event.target.value
);
return (
<Formik
enableReinitialize
initialValues={initialValues}
validationSchema={validationSchema}
onSubmit={async (values) => {
isEditPage
? await dispatch(editUser(values, currentUserData, userData.id))
: await dispatch(createUser(values, currentUserData));
}}
>
<FormControl className={classes.formControl}>
<TextField
className={classes.textField}
label="Фамилия"
variant="outlined"
inputProps={{ maxLength: 50 }}
value={values.lastName}
name={"lastName"}
error={Boolean(touched.lastName && errors.lastName)}
helperText={touched.lastName && errors.lastName}
onChange={handleUserInputChange}
/>
</FormControl>