仅限正数 - formik/yup 模式

positive numbers only - formik/yup schema

我做了这样一个架构:

const schema = yup.object().shape({

    seats: yup
      .number()
      .label('seats')
      .required('pls enter'),
  });

此外,我想检查数字是否为正数或大于 0。有什么方法可以将这样的条件添加到架构中吗?

您可以使用 test() 方法并在那里添加自定义验证:

number: Yup.number()
  .required('ERROR: The number is required!')
  .test(
    'Is positive?', 
    'ERROR: The number must be greater than 0!', 
    (value) => value > 0
  )

https://github.com/jquense/yup#mixedtestname-string-message-string--function-test-function-schema

实际上,Yup 开箱即用:https://github.com/jquense/yup#numberpositivemessage-string--function-schema

您可以使用 .positive() 也可以使用 .min(1)

const schema = yup.object().shape({

    seats: yup
      .number()
      .positive()
      .label('seats')
      .required('pls enter')
      .min(1),
  });