Как получить доступ к текущему значению поля formik без отправки? - PullRequest
1 голос
/ 02 марта 2020

Как мне получить доступ к значению SelectField с именем countryCode в моем компоненте React? Вариант использования заключается в том, что схема проверки должна изменяться в соответствии с countryCode.

  <Formik
    onSubmit={(values, actions) => this.onSubmit(values, actions.setFieldError)}
    validationSchema={() => this.registrationValidationSchema()}
    enableReinitialize={true}
    initialValues={this.props.initialData}
  >
      <Form>
          <Field
            name="countryCode"                                
            component={SelectField}
            label="Country"
            labelClassName="required"
            options={Object.entries(sortedCountryList).map(x => ({
                      value: x[1][1],
                      label: x[1][0]
                    }))}
          />
      </Form>
  </Formik>

Я пытался получить к нему доступ через ссылку, затем через this.props.values (как предложено в getFieldValue или аналогично в Formik ) но оба возвращают только неопределенное или нулевое значение. Мои реквизиты не имеют никакого поля «значений».

РЕДАКТИРОВАТЬ: Нашел уродливый путь: document.getElementsByName("countryCode")[0].value. Лучший способ ценится.

1 Ответ

1 голос
/ 03 марта 2020

Вы можете получить доступ к таким значениям, как это:

<Formik
    onSubmit={(values, actions) => this.onSubmit(values, 
    actions.setFieldError)}
    validationSchema={() => this.registrationValidationSchema()}
    enableReinitialize={true}
    initialValues={this.props.initialData}
        >
          {({
            setFieldValue,
            setFieldTouched,
            values,
            errors,
            touched,
          }) => (
            <Form className="av-tooltip tooltip-label-right">
              // here you can access to values
              {this.outsideVariable = values.countryCode}
            </Form>
            )}
        </Formik>
...