React Native

Formik 与 React Native 和 React Native Web 完全兼容。但是,由于 ReactDOM 和 React Native 处理表单和文本输入的方式存在差异,因此需要注意一些区别。本节将引导您了解这些差异以及我们认为的最佳实践。

要点

在继续之前,以下是如何使用 Formik 与 React Native 的一个极简要点,演示了关键差异

// 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>
);

如上所示,Formik 与 React DOM 和 React Native 使用之间的显著差异在于

  1. Formik 的 handleSubmit 传递给 <Button onPress={...} /> 而不是 HTML <form onSubmit={...} /> 组件(因为 React Native 中没有 <form /> 元素)。
  2. <TextInput /> 使用 Formik 的 handleChange(fieldName)handleBlur(fieldName) 而不是直接将回调分配给 props,因为我们必须从某个地方获取 fieldName,并且在 React Native 中我们无法像 Web 中那样自动获取它(使用 input name 属性)。您还可以使用 setFieldValue(fieldName, value)setFieldTouched(fieldName, bool) 作为替代。
此页面是否有帮助?

订阅我们的时事通讯

最新的 Formik 新闻、文章和资源,发送到您的收件箱。

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