Die Validierung der nativen React-Hook-Form-Controller-Regeln funktioniert nicht
P粉445714413
P粉445714413 2024-03-26 18:35:16
0
1
446

Ich habe eine App mit React Native entwickelt. Ich verwende React-Hook-Form für Anmelde- und Registrierungsbildschirme. Ich habe ein Validierungsschema erstellt. Ich kann dieses Validierungsschema nicht mit den Regeln des React-Hook-Form-Controllers verwenden, da ich den Eingabewert nicht zuweisen kann. Bitte helfen Sie!

const formKeys = {
    email: 'email',
    password: 'password',
  };

  const {
    handleSubmit,
    control,
    formState: {errors},
  } = useForm();

<Controller
                control={control}
                name={formKeys.email}
                render={({field: {onChange, value}}) => (
                  <InputFields
                    errorMessage={errors[formKeys.email]?.message.toString()}
                    value={value}
                    onChangeText={onChange}
                    autoCapitalize={'none'}
                    placeholder={t('common:email')}
                    image={
                      <View style={styles.userIconsStyle}>
                        <EmailIcon/>
                      </View>
                    }
                  />
                )}
                rules={{
                  required: emailValidation() //input value required here,
                  minLength: minLengthValidation(validationSchema.email.minLength),
                  maxLength:maxLengthValidation(validationSchema.email.maxLength),
                }}
              />

/*validation schema*/

export const emailValidation = (v: string): boolean | string => {
  const {t,i18n}=useTranslation();
  const emailRegx = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[A-Za-z]+$/;
  if (v) {
    return emailRegx.test(v) || `${t('common:errorMessages:invalidEmailAddress')}`;
  } else return `${t('common:email')} ${t('common:errorMessages:isRequired')}`;
};

P粉445714413
P粉445714413

Antworte allen(1)
P粉811329034

我使用 React js 创建了一个简单的示例,而不是 React Native(此处不会有所不同)

import { useForm, Controller } from "react-hook-form";

type FormValues = {
  email: string;
};

const emailValidation = (v: string): boolean | string => {
  // const {t,i18n}=useTranslation();
  const emailRegx = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[A-Za-z]+$/;
  if (v) {
    return emailRegx.test(v) || "invalidEmailAddress";
  } else return "isRequired";
};

export default function App() {
  const { handleSubmit, control, formState: {errors} } = useForm({mode: 'onChange'});

  console.log(errors);
  
  return (
    
console.log(data))}> ( )} rules={{ validate: { required: (value) => emailValidation(value) }, }} />
); }

沙箱示例这里

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!