如何使用 Yup 验证验证单个字段的 2 个条件
How do I validate 2 conditions for a single field using Yup validation
我想检查标题中的文本字段是否已填写,我还想将文本框的限制设置为300个字符。如果我独立尝试这些条件中的任何一个,它们就会起作用。但是,如果我同时尝试它们,则会执行字符限制验证,但不会执行另一个。
const validationSchema = Yup.object().shape({
title: Yup.string().required().label("Title"),
title: Yup.string().test('len', 'Title must be less than 300 characters', val =>
val.toString().length < 300)
})
您正在将一个对象传递给 .shape
函数,并且其中的 title
键两次导致第一个定义被覆盖。
您实际需要做的是为 title
创建一个条目,然后将所有验证逻辑作为值:
const validationSchema = Yup.object().shape({
title: Yup.string()
.test('len', 'Title must be less than 300 characters', val =>
val.toString().length < 300)
.required()
.label("Title")
})
您还可以将长度测试更改为内置 .max
操作:
const validationSchema = Yup.object().shape({
title: Yup.string()
.max(300, 'Title must be less than 300 characters')
.required()
.label("Title")
})
我想检查标题中的文本字段是否已填写,我还想将文本框的限制设置为300个字符。如果我独立尝试这些条件中的任何一个,它们就会起作用。但是,如果我同时尝试它们,则会执行字符限制验证,但不会执行另一个。
const validationSchema = Yup.object().shape({
title: Yup.string().required().label("Title"),
title: Yup.string().test('len', 'Title must be less than 300 characters', val =>
val.toString().length < 300)
})
您正在将一个对象传递给 .shape
函数,并且其中的 title
键两次导致第一个定义被覆盖。
您实际需要做的是为 title
创建一个条目,然后将所有验证逻辑作为值:
const validationSchema = Yup.object().shape({
title: Yup.string()
.test('len', 'Title must be less than 300 characters', val =>
val.toString().length < 300)
.required()
.label("Title")
})
您还可以将长度测试更改为内置 .max
操作:
const validationSchema = Yup.object().shape({
title: Yup.string()
.max(300, 'Title must be less than 300 characters')
.required()
.label("Title")
})