@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, что облегчает управление состоянием формы и валидацией полей.