是的:测试验证失败
Yup: Validation with test failes
我正在使用 yup 来验证我的反应形式。
我的问题是:
我有以下用于验证输入字段的架构。
object().shape({
firstname: string()
.required('First Name is required')
.test('length', 'First Name must have more than 1 character', (value) => {
console.log(value && value.length < 2 ? true : false);
return value && value.length < 2 ? true : false;
})
.test('alphabets', 'Name must only contain alphabets', (value) => {
console.log(!/^[A-Za-z]+$/.test(value));
return !/^[A-Za-z]+$/.test(value);
})
});
当我输入一个字符时它显示 Name must only contain alphabets
错误消息,当我尝试输入更多字符时它显示 First Name must have more than 1 character
错误消息。
我应该做错什么?
有人帮我解决这个问题吗?
您似乎以错误的方式进行了两种验证,如果验证通过,您想要 return true
,如果验证失败,则 false
。
在您的第一次验证中 value && value.length < 2 ? true : false
您正在寻找 value.length > 2
而不是 <
并且也不需要三元比较运算符 return true/false 评估后的价值。
在您的第二次验证中 !/^[A-Za-z]+$/.test(value);
您使用 !
否定验证
这是更正后的验证码:
object().shape({
firstname: string()
.required('First Name is required')
.test('length', 'First Name must have more than 1 character', (value) => {
return value && value.length > 2;
})
.test('alphabets', 'Name must only contain alphabets', (value) => {
return /^[A-Za-z]+$/.test(value);
})
});
我正在使用 yup 来验证我的反应形式。
我的问题是:
我有以下用于验证输入字段的架构。
object().shape({
firstname: string()
.required('First Name is required')
.test('length', 'First Name must have more than 1 character', (value) => {
console.log(value && value.length < 2 ? true : false);
return value && value.length < 2 ? true : false;
})
.test('alphabets', 'Name must only contain alphabets', (value) => {
console.log(!/^[A-Za-z]+$/.test(value));
return !/^[A-Za-z]+$/.test(value);
})
});
当我输入一个字符时它显示 Name must only contain alphabets
错误消息,当我尝试输入更多字符时它显示 First Name must have more than 1 character
错误消息。
我应该做错什么?
有人帮我解决这个问题吗?
您似乎以错误的方式进行了两种验证,如果验证通过,您想要 return true
,如果验证失败,则 false
。
在您的第一次验证中 value && value.length < 2 ? true : false
您正在寻找 value.length > 2
而不是 <
并且也不需要三元比较运算符 return true/false 评估后的价值。
在您的第二次验证中 !/^[A-Za-z]+$/.test(value);
您使用 !
这是更正后的验证码:
object().shape({
firstname: string()
.required('First Name is required')
.test('length', 'First Name must have more than 1 character', (value) => {
return value && value.length > 2;
})
.test('alphabets', 'Name must only contain alphabets', (value) => {
return /^[A-Za-z]+$/.test(value);
})
});