我有3个字段在表单中,“类型”字段是选择和从列表中,一些项目启用或禁用“输出”字段,如果是启用,我需要“输出”字段小于“输入”字段,反之亦然,但如果“输出”字段是禁用我不需要的验证,我正在尝试与.when的东西,但没有工作,有什么想法如何做呢?
const [disableOutCounterField, setDisableOutCounterField] = useState(false);
const schema = yup.object().shape({
type: yup.string().required(requiredMessage),
in: yup
.number(numberMessage)
.required(requiredMessage)
.integer(integerMessage)
.min(1, positiveMessage)
.typeError(numberMessage)
.when("out", {
is: !disableOutCounterField,
then: yup.number().moreThan(yup.ref("out"), moreThanMessage),
message: moreThanMessage,
}),
out: yup
.number(numberMessage)
.integer(integerMessage)
.typeError(numberMessage)
.lessThan(yup.ref("in"), lessThanMessage),
});发布于 2021-06-10 23:17:48
构造:
.when("out", {
is: !disableOutCounterField,将out值与!disableOutCounterField值进行比较,如果它们相等,则应用then规则。但它们很可能永远不是一样的。
对于out的任何值,这里需要的检查就是!disableOutCounterField本身的值。这可以使用表达式来完成:
.when("out", {
is: value => !disableOutCounterField,换句话说:对于每个out值,返回!disableOutCounterField,如果返回true,则应用then部分。
https://stackoverflow.com/questions/67923407
复制相似问题