Yup 是一个强大的 JavaScript 对象模式验证库,它允许开发者为数据结构定义验证规则。布尔值(0 或 1)的 Yup 模式可以用来确保某个字段的值只能是布尔类型的 true
或 false
,或者在某些情况下,可以接受数字 0
或 1
作为布尔值的表示。
Yup 模式是基于 JavaScript 的类,它允许你构建一个验证模式,然后使用这个模式来验证对象。布尔值的 Yup 模式通常会使用 .boolean()
方法来定义。
以下是一个使用 Yup 定义布尔值模式的示例:
import * as yup from 'yup';
// 定义一个接受布尔值 true 或 false 的模式
const booleanSchema = yup.boolean().required('布尔值是必填项');
// 定义一个接受数字 0 或 1,并将其视为布尔值的模式
const numericBooleanSchema = yup
.number()
.oneOf([0, 1], '值必须是 0 或 1')
.required('数字布尔值是必填项');
// 验证示例
async function validateData(data) {
try {
await booleanSchema.validate(data.booleanField);
console.log('布尔值验证通过');
} catch (err) {
console.error(err.message);
}
try {
await numericBooleanSchema.validate(data.numericBooleanField);
console.log('数字布尔值验证通过');
} catch (err) {
console.error(err.message);
}
}
validateData({ booleanField: true, numericBooleanField: 1 }); // 应该输出 "验证通过"
validateData({ booleanField: 'yes', numericBooleanField: 2 }); // 应该输出错误信息
问题:验证失败时,错误信息不够明确。
解决方法:使用 .typeError()
或 .required()
方法自定义错误信息,使其更加清晰。
const customErrorSchema = yup.boolean()
.typeError('请输入有效的布尔值(true 或 false)')
.required('此字段不能为空');
问题:需要同时接受布尔值和数字 0 或 1。
解决方法:结合使用 .oneOf()
和 .test()
方法来实现更复杂的验证逻辑。
const mixedSchema = yup.mixed().test(
'is-boolean-or-numeric',
'值必须是布尔值或数字 0/1',
(value) => value === true || value === false || value === 0 || value === 1
);
通过上述方法,可以灵活地处理布尔值的验证需求,并确保数据的准确性。
领取专属 10元无门槛券
手把手带您无忧上云