FormikはReact NativeとReact Native Webと100%互換性があります。ただし、ReactDOMとReact Nativeのフォームとテキスト入力の処理方法の違いにより、いくつかの違いに注意する必要があります。このセクションでは、それらと、ベストプラクティスと考えるものについて説明します。
さらに進む前に、React NativeでFormikを使用する方法の非常に最小限の要点を示し、主要な違いを示します。
// Formik x React Native exampleimport React from 'react';import { Button, TextInput, View } from 'react-native';import { Formik } from 'formik';export const MyReactNativeForm = props => (<FormikinitialValues={{ email: '' }}onSubmit={values => console.log(values)}>{({ handleChange, handleBlur, handleSubmit, values }) => (<View><TextInputonChangeText={handleChange('email')}onBlur={handleBlur('email')}value={values.email}/><Button onPress={handleSubmit} title="Submit" /></View>)}</Formik>);
上記のように、React DOMとReact NativeでFormikを使用する場合の顕著な違いは次のとおりです。
handleSubmit
は、HTMLの<form onSubmit={...} />
コンポーネントではなく、<Button onPress={...} />
に渡されます(React Nativeには<form />
要素がないため)。<TextInput />
は、コールバックをプロパティに直接割り当てる代わりに、FormikのhandleChange(fieldName)
とhandleBlur(fieldName)
を使用します。これは、fieldName
をどこかから取得する必要があり、React NativeではWebのように(input name属性を使用して)自動的に取得できないためです。代わりにsetFieldValue(fieldName, value)
とsetFieldTouched(fieldName, bool)
を使用することもできます。最新のFormikニュース、記事、リソースをメールで受信します。