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

react-hook-form报错:yupResolver期望6个参数却仅传入1个

问题原因及解决方案

原因

这个报错是因为yupResolver的调用方式与你安装的@hookform/resolvers版本不兼容,或存在类型使用错误:

  • 新版@hookform/resolvers(v3+)的yupResolver不再需要手动传入泛型参数,强行添加<SampleProps>会导致类型校验失败,触发参数数量不匹配的报错。
  • 也可能是react-hook-form与@hookform/resolvers版本不匹配,比如用v3版本的resolver搭配v6版本的react-hook-form。

解决方案

1. 修正yupResolver调用方式

去掉yupResolver后的泛型声明,直接传入schema即可;若需指定表单类型,将泛型放在useForm上:

import { useForm } from "react-hook-form";
import { yupResolver } from "@hookform/resolvers/yup";
import * as yup from "yup";

interface SampleProps {
  firstName: string;
  address: object;
  contact: string | Date | any;
}

// 定义yup校验规则
const schema = yup.object().shape({
  firstName: yup.string().required("First name is required"),
  // 补充其他字段的校验规则
});

const {
  register,
  handleSubmit,
  control,
  formState: { errors },
  getValues,
} = useForm<SampleProps>({
  resolver: yupResolver(schema), // 移除泛型<SampleProps>
  defaultValues: {
    firstName: "",
    address: {}, // 补充完整defaultValues,匹配SampleProps类型
    contact: ""
  },
  mode: "onChange",
});

2. 确保依赖版本兼容

检查package.json中的依赖版本,需满足:

  • react-hook-form 为 v7.x 版本
  • @hookform/resolvers 为 v3.x 版本(与react-hook-form v7兼容)

若版本不匹配,执行以下命令更新:

# 更新react-hook-form到最新v7版本
npm install react-hook-form@latest

# 更新@hookform/resolvers和yup到兼容版本
npm install @hookform/resolvers@latest yup@latest

3. 验证导入路径

确保从正确路径导入yupResolver,避免误导入其他包的同名函数:

import { yupResolver } from "@hookform/resolvers/yup";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:41:04