React Native

Formik 與 React Native 和 React Native Web 100% 相容。 然而,由於 ReactDOM 和 React Native 處理表單和文字輸入的方式不同,因此需要注意一些差異。本節將引導您了解這些差異以及我們認為的最佳實務。

重點

在繼續之前,以下是如何在 React Native 中使用 Formik 的一個非常簡要的重點,展示了主要差異

// Formik x React Native example
import React from 'react';
import { Button, TextInput, View } from 'react-native';
import { Formik } from 'formik';
export const MyReactNativeForm = props => (
<Formik
initialValues={{ email: '' }}
onSubmit={values => console.log(values)}
>
{({ handleChange, handleBlur, handleSubmit, values }) => (
<View>
<TextInput
onChangeText={handleChange('email')}
onBlur={handleBlur('email')}
value={values.email}
/>
<Button onPress={handleSubmit} title="Submit" />
</View>
)}
</Formik>
);

如您在上方所見,在 React DOM 和 React Native 中使用 Formik 的顯著差異如下

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

訂閱我們的電子報

最新的 Formik 新聞、文章和資源,將會寄送到您的收件匣。

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