【问题标题】:Using setFieldValue onSubmit in Formik在 Formik 中使用 setFieldValue onSubmit
【发布时间】:2019-07-25 18:19:07
【问题描述】:

我将formik@jbuschke/formik-antdreact-input-mask 一起使用。我有一个掩码 +7 (___) ___-__-__ 应用于其中一个输入,我需要解析它 onSubmit 以删除不必要的符号。

我定义了一个 const changedValue,然后在 setFieldValue 中使用,但出现以下错误:

Invariant Violation
Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.

这是我的代码和demo

const CloseForm = () => (
  <Formik
    initialValues={{ phone: "", email: "" }}
    onSubmit={(values, { setSubmitting, setFieldValue }) => {
      const changedValue = values.phone.replace(/\(|\)|\s|-/g, "");
      setTimeout(() => {
        setFieldValue("phone", changedValue);
        alert(JSON.stringify(values, null, 2));
        setSubmitting(false);
      }, 400);
    }}
    validate={validatePhone}
  >
    {({ isSubmitting, values, handleChange }) => {
      return (
        <Form>
          <FormItem name="phone" label="Phone" required="true">
            <CustomInput
              mask="+7 (999) 999-99-99"
              name="phone"
              onChange={handleChange}
            />
          </FormItem>
          <FormItem name="email" label="Email">
            <Input name="email" />
          </FormItem>
          <SubmitButton type="primary" disabled={isSubmitting}>
            Submit
          </SubmitButton>
          <pre>{JSON.stringify(values, null, 2)}</pre>
        </Form>
      );
    }}
  </Formik>
);

我该如何解决这个问题?或者可能有更好的方法来使用setFieldValue 来解析值?

【问题讨论】:

    标签: reactjs antd formik


    【解决方案1】:

    您可以在不更改字段的情况下修改要提交的值,例如:

    onSubmit={values => {
      const phone = values.phone.replace(/\(|\)|\s|-/g, "")
      const valuesToSend = { ...values, phone }
    
      alert(JSON.stringify(valuesToSend, null, 2))
    }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      相关资源
      最近更新 更多