Это устаревшая версия Formik v1.1.2, и я бы не рекомендовал ее использовать, поскольку есть некоторые критические изменения , такие как render
, метод устарел и будет удален в будущих версиях. Возможно, вы захотите использовать текущую версию v2.1.4
- как мне указать ссылку на форму внутри вызова ax ios?
Formik передает объект values вместе с другими методами (называемыми FormikBag ) внутри onSubmit проп. Вы можете передать эти значения непосредственно ax ios без необходимости использования собственных методов onSubmit
или onChange
. Обратите внимание, что <Formik>
компонент имеет другие реквизиты . это даст вам практически полный контроль / доступ для ваших нужд. Тем не менее, я бы рекомендовал использовать только состояние / методы Formik, чтобы избежать каких-либо побочных эффектов или ошибок, связанных с несколькими состояниями или обработчиками.
v2 Общий синтаксис:
<Formik
initialValues={initialValues}
// Other Formik props...
onSubmit = {(Object: form values, Object: Formik Bag ) => {
// access form values...
}}
>
// Access render methods and props (children props)
{(props) => {
return (
<Form>
<Field> ...
</Form>
)
}
}
</Formik>
топор ios Пример:
<Formik
initialValues={initialValues}
onSubmit={(values) => {
console.log(values) // Object holds your form values
axios({
method: "post",
url: "url",
data: { values }
})
})
/>
как мне получить доступ к состоянию формы в Formik? для переключения сообщения об успехе.
Вы можете использовать метод Formik setStatus из FormikBag внутри вашего onSubmit , чтобы передать ваш Статус ответа сервера, затем вы можете получить доступ к этому status через children props Вот пример:
<Formik
initialValues={initialValues}
onSubmit={(values, setStatus) => {
axios({
method: "post",
url: "url",
data: { values }
})
.then(res => {
if (res.status === 200) {
// 200 means POST method response with success
// Pass your server response to Formik
setStatus({
sent: true,
msg: "Message has been sent! Thanks!"
// Pass more if you need
})
}
})
.catch(err => {
// Something went wrong
setStatus({
sent: false,
msg: `Error! ${err}. Please try again later.`
})
})
})
>
// Later in your code destructuring the children props and use it like so:
{({ status }) => (
<Form>
<Field ... />
{status && status.msg && (
<p className={`alert ${ status.sent ? "alert-success" : "alert-error"}`}>
{status.msg}
</p>
)}
<button>Submit</button>
</Form>
)}
</Formik>
Я сделал форк вашего CodeSanbox и обновил версии / синтаксис зависимостей в этом codeSandbox Пример. Обратите внимание, что я не эксперт по машинописи.