@ogneog

Почему не срабатывает вывод ошибки в react-hook-form?

Приветствую.

Вот компонент авторизации:

const Auth: FC = () => {

    //useAuthRedirect()

    const {isLoading} = useAuth()
    
    const {login ,register} = userActions()
    const [type, setType] = useState<'login' | 'register'>('login')

    const {register: formRegister, handleSubmit, formState: {errors}, reset} = useForm<IEmailPassword>({
        mode: "onChange"
    })

    const onSubmit:SubmitHandler<IEmailPassword> = (data) => {
        if(type === 'login') {
            login(data)
        }else{
            register(data)
        }
        reset()
    }

    return (
        <>

            <h3>Type: {type}</h3>
            <form onSubmit={handleSubmit(onSubmit)}>

                {isLoading ? <>Loading</> : <></>}

                <Field
                    {...formRegister('email', {
                        required: 'Email is required',
                    })}
                    placeholder='Email'
                    error={errors.email?.message} // Убедитесь, что это правильно устанавливается
                />
                <Field
                    {...formRegister('password', {
                        required: 'Password is required',
                        minLength: {
                            value: 6,
                            message: 'Min length 6 symbols',
                        }
                    })}
                    type='password'
                    placeholder='Password'
                    error={errors.password?.message} // Убедитесь, что это правильно устанавливается
                />

                <Button type="submit">Auth</Button>
                <button type="button" onClick={() => setType(type === 'login' ? 'register' : 'login')}>{type === 'login' ? 'register' : 'login'}</button>
            </form>
        </>
    )
}


Сам Field выглядит так:

const Field = forwardRef<HTMLInputElement, IField>(
    ({placeholder, error, className, type = 'text', style, Icon, ...rest}, ref) => {

        return (
            <div className={cn('', className)} style={style}>
                <label>
                    <span>
                        {Icon && <Icon className='mr-3'/>}

                        {placeholder}
                    </span>
                    <input ref={ref} type={type} {...rest}/>
                </label>
                {error && <div>{error}</div> }
            </div>
        )
    }
)


Почему-то не выводит error. С backend получаю такой ответ:

{"message":"Неверный пароль","error":"Unauthorized","statusCode":401}

Но по каким-то причинам мне выдает undefined при выводе ошибки в console.log
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы