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
會傳遞給 <Button onPress={...} />
,而不是 HTML <form onSubmit={...} />
元件(因為 React Native 中沒有 <form />
元素)。<TextInput />
使用 Formik 的 handleChange(fieldName)
和 handleBlur(fieldName)
,而不是直接將回呼函式指派給 props,因為我們必須從某處取得 fieldName
,而在 React Native 中,我們無法像在網頁中那樣自動取得它(使用 input name 屬性)。您也可以使用 setFieldValue(fieldName, value)
和 setFieldTouched(fieldName, bool)
作為替代方案。