获取另一个字段的值以在 Yup Schema 中进行验证
Get the value of another field for validation in Yup Schema
我将 Formik 与 Yup 一起用于验证和 TypeScript
我有一个字段需要根据另一个字段的值进行验证。
第一个字段称为价格,第二个字段称为提示。最高小费值为输入价格的 10%。
我尝试使用以下方法为此创建验证:
tips: yup.number()
.min(0, `Minimum tip is [=10=]`)
.max( parseFloat(yup.ref('price'))* 0.1, "Maximum tip is 10% of the price.");
但是这不会编译,因为 yup.ref returns 参考。如何获取此验证中价格字段的值?
number.max
无法引用其他字段并在验证时用它计算。
如果您想这样做,您需要使用 mixed.test
实现自己的模式。
这是一个例子。
tips: number()
.min(0, `Minimum tip is [=10=]`)
.test({
name: 'max',
exclusive: false,
params: { },
message: '${path} must be less than 10% of the price',
test: function (value) {
// You can access the price field with `this.parent`.
return value <= parseFloat(this.parent.price * 0.1)
},
}),
希望对您有所帮助。
我将 Formik 与 Yup 一起用于验证和 TypeScript
我有一个字段需要根据另一个字段的值进行验证。
第一个字段称为价格,第二个字段称为提示。最高小费值为输入价格的 10%。
我尝试使用以下方法为此创建验证:
tips: yup.number()
.min(0, `Minimum tip is [=10=]`)
.max( parseFloat(yup.ref('price'))* 0.1, "Maximum tip is 10% of the price.");
但是这不会编译,因为 yup.ref returns 参考。如何获取此验证中价格字段的值?
number.max
无法引用其他字段并在验证时用它计算。
如果您想这样做,您需要使用 mixed.test
实现自己的模式。
这是一个例子。
tips: number()
.min(0, `Minimum tip is [=10=]`)
.test({
name: 'max',
exclusive: false,
params: { },
message: '${path} must be less than 10% of the price',
test: function (value) {
// You can access the price field with `this.parent`.
return value <= parseFloat(this.parent.price * 0.1)
},
}),
希望对您有所帮助。