withFormik, передать функцию в качестве реквизита - PullRequest
0 голосов
/ 23 июня 2019

Я использую Formik для создания формы ввода пользователя.И я использую withFormik для обработки моей формы.В настоящее время я передаю свой handleSubmit внутри моего компонента следующим образом:

export const CreateForm = withFormik({
  mapPropsToValues: () => ({
    primarySkill: "12"
  }),
  validationSchema: () => FormSchema,

  handleSubmit: (values, { setSubmitting }) => {
    setTimeout(() => {
      alert(JSON.stringify(values, null, 2)); // For testing
      setSubmitting(false);
    }, 1000);
  }
})(MyForm);

Вместо этого я хотел бы передать что-то вроде этого <CreateForm handleSubmit={handleSubmit} /> в мой компонент App.js (root).Кто-нибудь может дать мне подсказку, как это сделать, пожалуйста?

1 Ответ

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

Вы можете передать функцию через реквизит так, как вы намекаете в нижней части вашего вопроса. Затем вы можете заключить вызов withFormik в тело функции вашего компонента CreateForm, чтобы вы могли передавать реквизиты компоненту CreateForm и иметь CreateForm возможность управления отображением этих реквизитов в компонент Formik.

Например:

const MyComponent = props => {
    function handleSubmit(values, { setSubmitting }) {
        // handle
    }

    return (
        <CreateForm handleSubmit={ handleSubmit }/>
    )
}

const CreateForm = props => {
    const { handleSubmit } = props;

    const MyFormWithFormik = withFormik({
        // ...,
        handleSubmit: handleSubmit,
    })(MyForm);

    return <MyFormWithFormik/>
}
...