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

如何在不重定义Schema的前提下仅验证Yup Schema的部分字段?

解决Yup Schema仅验证指定字段的问题

你可以通过以下两种方式实现仅验证category字段,无需重新定义完整Schema:

方法一:使用validateAt单独验证单个字段

直接调用Yup的validateAt方法,指定要验证的字段名和对应值,这样只会触发该字段的校验规则,不会检查其他字段:

const handle = async () => {
  try {
    // 仅验证category字段
    await InsertSchema.validateAt('category', { category });
    // 验证通过时清空错误
    setInputErrors({});
  } catch (e) {
    // 仅捕获category字段的错误
    setInputErrors({ category: e.message });
  }
}

方法二:使用pick提取指定字段的Schema

通过pick方法从原Schema中提取需要验证的字段,生成一个仅包含该字段规则的新Schema,再进行验证:

const handle = async () => {
  try {
    // 从原Schema中提取category字段的验证规则
    await InsertSchema.pick(['category']).validate({ category }, { abortEarly: false });
    setInputErrors({});
  } catch (e) {
    let errors = getYupValidationErrors(e);
    setInputErrors(errors);
  }
}

原代码问题说明

你之前的验证方式会触发usage的错误,是因为原Schema中usage被标记为必填,当你传入的对象缺少该字段时,Yup会自动校验所有必填字段。上面两种方法都能规避这个问题,只聚焦在category字段的验证上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:30:41