Я использую пользовательский компонент реагирования с formik, который обрабатывается путем отправки значения, в котором я его использую, и установки его собственного состояния от его родителя, поэтому onChange я всегда устанавливаю его состояние реакции, кроме setFieldvalue, чтобы установить его в formik, поскольку я не используюhandleChange от formik props.
<Field
render={(fields: { field: object; form: formProps }) => {
return (
<TextField
name="title"
error={errors.title && touched.title}
value={title}
onKeyUp={() => null}
onBlur={handleBlur}
onChange={(e: { target: { value: string } }) =>
this.props.onChange('title', e, fields.form)
}
placeholder="e.g Introduction to UX Design"
/>
);
}}
/>
onChange = (
stateField: string,
e: { target: { value: string } },
form: { setFieldValue: (field: string, value: string) => void }
) => {
// the field is controlled twice here
form.setFieldValue(stateField, e.target.value);
this.setState({ [stateField]: e.target.value });
};
это работает правильно, но мне сложно работать с двумя случаями в каждой области, и я не чувствую, что это лучший способ сделать это, какая-нибудь помощь?