@laney_johnson
Существует несколько способов сделать валидацию полей в React Native:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import React, { useState } from 'react'; import { View, TextInput, Button, Text } from 'react-native'; const MyForm = () => { const [name, setName] = useState(''); const [email, setEmail] = useState(''); const [error, setError] = useState(''); const handleNameChange = value => setName(value); const handleEmailChange = value => setEmail(value); const validate = () => { if (!name) { setError('Name is required'); return false; } if (!email) { setError('Email is required'); return false; } if (!/S+@S+.S+/.test(email)) { setError('Email is invalid'); return false; } setError(''); return true; }; const handleSubmit = () => { if (validate()) { // submit form } }; return ( {error ? {error} : null} ); }; export default MyForm; |
Это пример простой формы с двумя полями (имя и электронная почта) и функцией валидации, которая проверяет, были ли заполнены оба поля и правильно ли указан адрес электронной почты.
@laney_johnson
Вот как сделать валидацию полей в форме с использованием Formik в React Native:
1
|
npm install formik yup |
1 2 |
import { Formik } from 'formik';
import * as yup from 'yup';
|
1 2 3 4 |
const validationSchema = yup.object().shape({
name: yup.string().required('Name is required'),
email: yup.string().email('Invalid email').required('Email is required'),
});
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<Formik
initialValues={{ name: '', email: '' }}
validationSchema={validationSchema}
onSubmit={(values) => {
// handle form submission
}}
>
{({ handleChange, handleBlur, handleSubmit, values, errors, touched }) => (
<View>
<TextInput
onChangeText={handleChange('name')}
onBlur={handleBlur('name')}
value={values.name}
placeholder="Name"
/>
{touched.name && errors.name && <Text style={{ color: 'red' }}>{errors.name}</Text>}
<TextInput
onChangeText={handleChange('email')}
onBlur={handleBlur('email')}
value={values.email}
placeholder="Email"
/>
{touched.email && errors.email && <Text style={{ color: 'red' }}>{errors.email}</Text>}
<Button title="Submit" onPress={handleSubmit} />
</View>
)}
</Formik>
|
Это пример использования Formik и Yup для валидации формы в React Native, что облегчает управление состоянием формы и валидацией полей.