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 contextconst { values, submitForm } = useFormikContext();React.useEffect(() => {// Submit the form imperatively as an effect as soon as form values.token are 6 digits longif (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><FormikinitialValues={{ 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
高階組件的後代),您將在控制台中收到警告。