如何解决React项目中react-hook-form无默认导出useForm的导入错误
报错原因
该错误由react-hook-form不同版本的导出规则差异导致:v5及更早版本使用默认导出useForm,v6及之后版本改为命名导出,不再提供默认导出。
你package.json中声明的react-hook-form版本为3.13.1,属于支持默认导出的旧版本,触发报错大概率是本地node_modules中实际安装的版本为v6+,和声明的版本不匹配。
解决方法
方案一:适配高版本(推荐)
修改导入语句即可兼容v6及以上版本,无需降级依赖:
将代码中的导入行
import useForm from "react-hook-form";
修改为
import { useForm } from "react-hook-form";
如果修改后运行出现register相关报错,说明实际安装的是v7及以上版本,可同步修改输入框的注册写法,将ref={register({})}替换为{...register("对应字段名")},示例:
<input name="password" type="text" {...register("password")} />
方案二:还原为声明的v3旧版本
不需要修改原有代码,只要将依赖还原到你指定的3.13.1版本即可,操作步骤:
- 删除项目根目录的
node_modules文件夹、package-lock.json文件(yarn用户删除yarn.lock文件) - 执行
npm install命令重新安装所有依赖 - 重新执行
npm start启动项目即可正常运行
内容的提问来源于stack exchange,提问作者sneha
相关产品推荐
相关产品推荐

