useFormikContext()

useFormikContext() は、React Context を介してすべてのFormikの状態とヘルパーを返すカスタムReactフックです。

Stripeの2段階認証フォームと同様に動作するフォームの例を次に示します。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 Contextを介してFormikの状態とヘルパーを返すカスタムReactフック。したがって、このフックは、プルできる親Formik React Contextがある場合にのみ機能します。親コンテキスト(つまり、<Formik>コンポーネントまたはwithFormik高階コンポーネントの子孫)なしで呼び出された場合、コンソールに警告が表示されます。

このページは役に立ちましたか?

ニュースレターを購読する

最新のFormikのニュース、記事、リソースが受信トレイに送信されます。

Copyright © 2020 Formium, Inc. All rights reserved.