You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Yup校验中的number().min()方法无法正常生效?

amount字段校验不生效排查方案

  • 输入值类型不匹配
    Yup的number()规则默认会尝试做类型转换,但如果你的表单输入的amount是无法转换为数字的字符串(比如包含字母、特殊符号),或者你用的输入框默认返回字符串类型值(比如原生type="text"的input),会先触发类型校验失败,后续的min、positive规则就不会执行。
    解决方法可以加类型错误提示,或者提前把值转为数字再提交校验:
const validationSchema = Yup.object().shape({
    asset: Yup.string().required("必填!"),
    amount: Yup.number()
      .typeError("请输入合法数字")
      .required("必填")
      .min(5, "必须大于5")
      .positive(),
  });
  • 校验触发逻辑配置问题
    如果搭配Formik等表单库使用,默认可能仅在表单提交时校验全量字段,或者配置了仅字段被触摸(touched)后才展示错误。可以检查是否正确触发了amount字段的校验,以及是否正确读取了该字段的错误信息做展示。
  • 字段名不匹配
    检查表单提交的对象中,对应数字字段的key是否和schema中声明的amount完全一致,排查拼写、大小写错误。
  • 规则边界误判
    你声明的min(5)规则要求数值≥5,positive()要求数值必须为正,0、负数、小于5的正整数都会触发校验失败,注意不要误判为规则未生效。

内容的提问来源于stack exchange,提问作者Clancinio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:36:04