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

使用Zod校验React Select选中对象非空的实现问题

Zod校验react-select选中值的正确写法

你之前的写法z.object("Country required")是错误的,因为z.object()的参数需要是对象结构定义,而非错误提示文本。要实现仅校验选中的Country对象非null且已定义、无需校验字段的需求,推荐以下几种写法:

  • 最简方案:用z.any().nonnull()
    直接允许任意类型,但强制排除null和undefined,同时可以自定义错误提示:

    const schema = z.object({
      // 其他字段
      country: z.any().nonnull("Country required")
    });
    
  • 更严谨的方案:用z.unknown().nonnull()
    和any类似,但明确表示值类型未知,仅校验存在性,适合不需要依赖类型推断的场景:

    const schema = z.object({
      // 其他字段
      country: z.unknown().nonnull("Country required")
    });
    
  • 保留类型提示的方案:用z.custom()
    如果想关联你的Country接口,让TS保留类型推断(但不校验字段),可以用自定义校验:

    const schema = z.object({
      // 其他字段
      country: z.custom<Country>(
        (val) => val !== null && val !== undefined,
        "Country required"
      )
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:32:03