reactjs - 在formik表单上验证yup时使用
问题描述
嘿,伙计,我对 2 个表单输入数字 min 和 max 有问题,我希望 max 的值总是大于 min 值,如果不是,使用 yup 来显示错误,但似乎它不起作用,这是我的代码。感谢您的帮助!!
const formikAddFilter = useFormik({
enableReinitialize: true,
initialValues: {
filterName: '',
min: 0,
max: 0,
unValidRange: max > min
},
validationSchema: Yup.object().shape({
unValidRange:Yup.boolean(),
filterName: Yup.string().required('Skill is required'),
max:Yup.number().when('unValidRange',{
is:true,
then: Yup.number().required('max cant less than min')
})
}),
onSubmit: values => {
alert(JSON.stringify(values))
setFilterItem([...filterItem, values])
formikAddFilter.setFieldValue('filterName', '')
formikAddFilter.setFieldValue('min', 0)
formikAddFilter.setFieldValue('max', 0)
}
});
解决方案
尝试这个
const validationRange = yup.object().shape({
min: yup.number().required(),
max: yup
.number()
.required()
.test('superior', 'min must be smaller than max', function(f) {
const ref = yup.ref('min');
return f > this.resolve(ref);
})
});
演示: Stackblitz
推荐阅读
- python - Python:为什么 for 循环在 join() 函数的中间?
- java - Spring WebClient - 如何处理错误场景
- python - 我的神经网络的准确性很差
- wordpress - 在产品上方的 Woocommerce 类别中显示热门内容
- vue.js - Vue 计算函数来匹配来自 2 个不同数组的元素
- tsql - SSMS 取消注释选定的快捷方式不再起作用
- assembly - 向已编译的 x86 exe 添加指令
- java - @RefreshScope 无法与 @Bean 相处
- operating-system - 调度器算法和调度器策略
- android-studio - 数据更新后颤振列表视图不更新