Я пытаюсь написать схему проверки в Yup для адресов электронной почты, разделенных запятыми.
Пока что я создал настраиваемую функцию проверки и добавил ее в свою схему. Он помещает пользовательский ввод, разделенный запятыми, в массив ... я хочу проверить каждое из этих писем в массиве, используя встроенный Yup.string().email()
.
function invalidEmails(this: Yup.StringSchema, msg: string) {
return this.test({
name: "invalidEmails",
message: msg,
test: (value) => {
// push email into emails array
const emails = value.replace(/\s/g, "").split(",");
emails.forEach((email: any) => {
// I want to run the Yup.string().email() validation for each email
});
},
});
}
Добавьте настраиваемую функцию в addMethod
Yup.addMethod(Yup.string, "invalidEmails", invalidEmails);
Наконец, добавьте его в схему Yup:
<Formik
initialValues={{
emails: ""
}}
validateOnBlur={true}
validationSchema={Yup.object().shape({
emails:
Yup.string().checkEmails("One or more email is not valid"),
})}
render={(formikProps: any) => (
<Form>
<input name="emails" /> // email field
</Form>
)}
/>