Как я могу проверить поле ввода в react с использованием регулярного выражения с помощью перехватов

#reactjs #react-hooks

#reactjs #реагировать-перехваты

Вопрос:

Я пытаюсь проверить ввод с помощью перехватов, но сталкиваюсь с проблемой, поскольку я хочу, чтобы, если пользователи оставляют электронное письмо пустым и переходят к паролю, тогда я хочу показать сообщение о том, что электронное письмо не может быть пустым, также хочу проверить с помощью регулярного выражения, что электронное письмо действительное или нет, если теперь отображается недопустимое электронное письмо, но я не могу увидеть сообщение об ошибке электронной почты в возврате. Буду признателен за любую помощь.

Я довольно новичок в перехватах react.

 export default function SignInForm() {
    const [email, setEmail] = useState(null);
    const [password, setlPassword] = useState(null);
    const [emailError, setEmailError] = useState(null);

    const emailValidation = (e) => {
         setEmail(e.target.value)
        if(!email){
            setEmailError('Enter a Email Address')
        }
    }
    console.log(emailError,"emailerror")
    const { t } = useTranslation();
    return (
        <Form fontColor={(props) => props.theme.colors.grey.base}>
            <label>{t('E-mail')}</label>
            <Input
                id={'email'}
                type={'email'}
                onChange={emailValidation}
            />
            <Status>{emailError}</Status>
            <label>{t('Password')}</label>
            <Input
                id={'password'}
                type={'password'}
                onChange={(e) => setlPassword(e.target.value)}
            />
            <Column>
                <ForgetText>{t('Forgotten')}</ForgetText>
            </Column>
            <Button themeBlue width={'336px'} onClick={() => onSubmit()}>
                {t('Sign In')}
            </Button>
</Forms>
  

Комментарии:

1. Какую библиотеку npm вы используете для <Forms> и т.д.?

2. @spycbanda я не использовал какую-либо библиотеку для формы, использовал простой ввод и form и onSubmit

Ответ №1:

 export default function SignInForm() {
    const [email, setEmail] = useState('');
    const [password, setlPassword] = useState('');
    const [emailError, setEmailError] = useState('');

    const emailValidation = (e) => {
        const tempEmail = (e amp;amp; e.target amp;amp; e.target.value) || e;
        setEmail(tempEmail);
        const re = /S @S .S /;
        const isValidEmail = re.test(String(tempEmail).toLowerCase());
        if(!tempEmail){
            setEmailError('Enter a Email Address')
        } else if(!isValidEmail) {
            setEmailError('Enter a Valid Email')
        }
    }
    console.log(emailError,"emailerror")
    const { t } = useTranslation();
    return (
        <Form fontColor={(props) => props.theme.colors.grey.base}>
            <label>{t('E-mail')}</label>
            <Input
                id={'email'}
                type={'email'}
                onChange={emailValidation}
            />
            <Status>{emailError}</Status>
            <label>{t('Password')}</label>
            <Input
                id={'password'}
                type={'password'}
                onChange={(e) => {setlPassword(e.target.value); emailValidation(email);}}
            />
            <Column>
                <ForgetText>{t('Forgotten')}</ForgetText>
            </Column>
            <Button themeBlue width={'336px'} onClick={() => onSubmit()}>
                {t('Sign In')}
            </Button>
</Forms>
  

Комментарии:

1. как только отображается сообщение об ошибке, когда я добавляю действительное электронное письмо, они по-прежнему сохраняют сообщение об ошибке