useFormikContext()

useFormikContext() 是一個自定義的 React hook,它將通過 React Context 返回所有 Formik 狀態和輔助函式。

範例

這是一個與 Stripe 的雙重驗證表單類似運作的表單範例。 只要您輸入 6 位數字,表單就會自動提交(即無需按下 Enter 鍵)。

import React from 'react';
import { useFormikContext, Formik, Form, Field } from 'formik';
const AutoSubmitToken = () => {
// Grab values and submitForm from context
const { values, submitForm } = useFormikContext();
React.useEffect(() => {
// Submit the form imperatively as an effect as soon as form values.token are 6 digits long
if (values.token.length === 6) {
submitForm();
}
}, [values, submitForm]);
return null;
};
const TwoFactorVerificationForm = () => (
<div>
<h1>2-step Verification</h1>
<p>Please enter the 6 digit code sent to your device</p>
<Formik
initialValues={{ token: '' }}
validate={values => {
const errors = {};
if (values.token.length < 5) {
errors.token = 'Invalid code. Too short.';
}
return errors;
}}
onSubmit={(values, actions) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
actions.setSubmitting(false);
}, 1000);
}}
>
<Form>
<Field name="token" type="tel" />
<AutoSubmitToken />
</Form>
</Formik>
</div>
);

參考

useFormikContext(): FormikProps<Values>

一個自定義的 React Hook,它通過 React Context 返回 Formik 狀態和輔助函式。 因此,此 hook 僅在存在可以提取的父 Formik React Context 時才有效。 如果在沒有父 context 的情況下調用(即 <Formik> 組件或 withFormik 高階組件的後代),您將在控制台中收到警告。

這個頁面有幫助嗎?

訂閱我們的電子報

最新的 Formik 新聞、文章和資源,將發送到您的收件箱。

版權所有 © 2020 Formium, Inc. 保留所有權利。