обрабатывать onChange, используя пользовательский компонент реагировать с formik - PullRequest
0 голосов
/ 11 июля 2019

Я использую пользовательский компонент реагирования с 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 });
};

это работает правильно, но мне сложно работать с двумя случаями в каждой области, и я не чувствую, что это лучший способ сделать это, какая-нибудь помощь?

1 Ответ

0 голосов
/ 11 июля 2019

Зачем вам нужно контролировать значение дважды? Разве вы не можете вывести его из состояния формы, когда это необходимо, вместо того, чтобы хранить его в состоянии компонента? Если вы объясните вариант использования более подробно, я думаю, что кто-то предложит лучший способ решения проблемы.

...