为何我的Yup字符串数组验证schema不生效?
解决Yup数组元素字符串验证失效的问题
你的问题出在Yup的自动类型转换机制上:默认情况下,Yup会尝试把非字符串类型(比如数字、布尔值)自动转换成字符串,导致这些不符合要求的元素绕过验证规则。
解决方案
给数组内的字符串校验加上.strict()方法,关闭自动类型转换,强制校验原始数据类型:
locationTracking: yup .array() .of(yup.string().strict().typeError('数组元素必须为字符串')) .required('locationTracking是必填项') .typeError('locationTracking必须是数组') .min(1, 'locationTracking至少包含一个元素'),
补充说明
.strict()会让Yup严格校验数据类型,不做任何自动转换,数字、布尔值这类非字符串元素会直接触发typeError提示。- 你之前的代码存在拼写错误:
.require()应为.required(),如果需要确保数组内无空字符串,可在.strict()后追加.required('数组元素不能为空')。
内容的提问来源于stack exchange,提问作者angelplusultra
相关产品推荐
相关产品推荐

