Formik доступ к initialValues ​​в обработчике onSubmit для сравнения со значениями - PullRequest
0 голосов
/ 06 мая 2019

У меня есть форма редактирования, которая использует Formik.Мне нужно загрузить новое изображение, если строка изображения изменилась.Мне нужно сравнить initialValues ​​ поля изображения с значениями поля изображения, чтобы определить, вызывать ли функцию fileUpload для загрузки изображения и возврата строки uri

Как я могу получить доступ к initialValues ​​в моем обработчике onSubmit, чтобы выполнить это сравнение.Я искал в Интернете и нашел статью на эту тему, однако, автор использует приставку и перекомпоновку.В моем случае я использую graphql и не использую никаких библиотек управления состоянием

Возможно ли сделать такое сравнение без библиотеки управления состоянием?n как я могу получить доступ к initialValues ​​внутри моего обработчика onSubmit?

formProps имеет и initialValues, и значения.submitProps имеет только значения, но не имеет initialValues, которые мне нужно сравнить, если поле было изменено пользователем

<Formik
  initialValues={{
    ...getMusicById,
  }}
  onSubmit={(values, bag, ...submitProps) => {
    console.log("@onSubmit ", values, bag, submitProps);
    const {
      session: { me }
    } = this.props;
    this._handleSubmit(values, bag, me);
  }}
  validationSchema={formValidateSchema}
  render={({ isValid, isSubmitting, ...formProps }) => {
    console.log("@formProps ", formProps);
    return (
      <React.Fragment>
        <Form>

1 Ответ

1 голос
/ 07 мая 2019

Можно ли проводить такое сравнение без библиотеки управления состоянием? n как я могу получить доступ к initialValues ​​внутри моего обработчика onSubmit?

Не напрямую - простота готовых компонентов (<Formik/>) всегда имеет недостатки.

Вы можете использовать любой метод управления состоянием и передавать значения для initialValues в качестве реквизитов.

В статье <Formik/> включен в <FooForm/>, дополненный HOC. Значения хранятся в редуксе и передаются как реквизиты в <Formik />

Вы можете использовать простой компонент класса и его состояние (или реквизиты), передаваемые как initialValues. Обработчик отправки, определенный в том же компоненте (также переданный как prop), будет иметь доступ к данным / объекту в this.state. Конечно, вы можете использовать крючки - useState для этого в функциональном компоненте.

Вы можете использовать withFormik HOC - должно быть доступно props.initialValues.

...