gpt4 book ai didi

reactjs - yup.js 验证数字字段大于兄弟,或可为空

转载 作者:行者123 更新时间:2023-12-04 02:36:23 25 4
gpt4 key购买 nike

我正在使用 Yup.js 来验证一些表单字段。

我有两个整数字段,Year Built & Year Renovated .
Year Built是必填字段,Year Renovated不是。

翻新年份可以留空,但是如果有一个值,它应该大于 build 年份(因为翻新肯定是在 build 日期之后发生的)。

我相信我需要使用 yup 的 ref()以及是的 when()功能。我尝试了以下方法:

让 currentYear = new Date().getFullYear();

yup.object().shape({
yearBuilt : yup.number().integer().min(1700).max(currentYear+1).required(),
yearRenovated : yup.number().integer().when(
'$yearRenovated', (yearRenovated, schema)=>{
return yearRenovated > 0 ?
schema.min(yup.ref('yearBuilt')).max(currentYear+1) :
schema.transform(emptyStringToNull).nullable()
}
)
})

* 变换函数, emptyStringToNull只需检查是否 value === ''如果是,则返回 null。

以上确实允许空值,以及正确检查整数。但是它没有正确评估 yearRenovated > yearBuilt .我如何正确检查如果 yearRenovated不为空,即大于 yearBuilt ?

非常感谢大家的帮助。

最佳答案

@JQuense,repo 的所有者有一个 Eloquent 解决方案,使用 moreThan() :

const schema = yup.object().shape({
yearBuilt: yup
.number()
.integer()
.min(1700)
.max(currentYear+1)
.required(),
yearRenovated: yup
.number()
.integer()
.nullable()
.moreThan(yup.ref("yearBuilt")) //<-- a whole lot neater than using a when conditional...
.max(currentYear+1)
});

希望有帮助!谢谢@JQuense。

关于reactjs - yup.js 验证数字字段大于兄弟,或可为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61661687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com