Как получить формик реквизит от детского компонента? - PullRequest
2 голосов
/ 25 июня 2019

У меня есть форма Formik, и мне нужно каким-то образом получить реквизит Formik (в частности, serFieldError) изнутри наружу.

Мой код:

const SignUp = props => {
  const onSubmitClick = values => {
    //...
  };

  const SignUpView = props => {
    const { setFieldError } = props;

    //..

    return (
    <Form className="signup-form"/>
    //...
    );
  };

  return (
    <Formik
      initialValues={initialValues}
      validationSchema={signUpSchema}
      onSubmit={onSubmitClick}
      render={SignUpView}
    />
  );
};

Есть ли способ?передать setFieldError из SignUpView (внутренний) в SignUp (внешний)?

1 Ответ

0 голосов
/ 28 июня 2019

Вот модифицированный код, основанный на вашем.

const SignUp = props => {
  let setFieldErrorParentReference = null;

  // This method's signature is wrong, it gets an object containing 'values' property in it.
  // Here's proper signature https://jaredpalmer.com/formik/docs/api/formik#onsubmit-values-values-formikbag-formikbag-void
  const onSubmitClick = values => {
    //...
  };

  const SignUpView = props => {
    const { setFieldError } = props;
    // Every time SignUpView renders it will get new formik object and then that new object reference will be stored and you can do whatever yuo want using that.
    setFieldErrorParentReference = setFieldError;

    //..

    return (
    <Form className="signup-form"/>
    //...
    );
  };

  return (
    <Formik
      initialValues={initialValues}
      validationSchema={signUpSchema}
      onSubmit={onSubmitClick}
      render={SignUpView}
    />
  );
};
...