如何将react-hook-form与ant design或material UI一起使用

2024-02-18

我正在尝试使用react-hook-form库来验证表单。当我使用 ant design 或 Material UI 渲染视图时,它无法正常工作。

<Input name="firstName" ref={register({ required: true })} />
  {errors.firstName && 'First name is required'}

发生了一些警告:"Missing name at.....".


在此处对作者进行反应钩子。 React Hook Form 包含不受控制的组件和本机输入,但是很难避免与外部受控组件(例如 React-Select、AntD 和 Material-UI)一起使用。因此,我构建了一个包装器组件来帮助您更轻松地集成。

https://github.com/react-hook-form/react-hook-form-input https://github.com/react-hook-form/react-hook-form-input

好吧,你可能想知道这样做的意义是什么,以及你从带有受控组件的 React hook 形式中得到了什么?首先,您仍然可以根据自己的选择从我们的构建验证或模式验证中受益。其次,这将通过将输入状态更新隔离到自身来提高您的应用程序或表单性能,这意味着即使使用受控组件,您的表单根也可以通过 0 重新渲染来实现。

这是codesandbox示例:https://codesandbox.io/s/react-hook-form-hookforminput-rzu9s https://codesandbox.io/s/react-hook-form-hookforminput-rzu9s

希望这些是有意义的,并且我创建的额外组件也能帮助您。

除此之外,我还构建了一个包装器组件以使事情变得更容易一些:

import React from 'react';
import useForm from 'react-hook-form';
import { RHFInput } from 'react-hook-form-input';
import Select from 'react-select';

const options = [
  { value: 'chocolate', label: 'Chocolate' },
  { value: 'strawberry', label: 'Strawberry' },
  { value: 'vanilla', label: 'Vanilla' },
];

function App() {
  const { handleSubmit, register, setValue, reset } = useForm();

  return (
    <form onSubmit={handleSubmit(data => console.log(data))}>
      <RHFInput
        as={<Select options={options} />}
        rules={{ required: true }}
        name="reactSelect"
        register={register}
        setValue={setValue}
      />
      <button
        type="button"
        onClick={() => {
          reset({
            reactSelect: '',
          });
        }}
      >
        Reset Form
      </button>
      <button>submit</button>
    </form>
  );
}

https://github.com/react-hook-form/react-hook-form-input https://github.com/react-hook-form/react-hook-form-input


update

React-hook-form v4、react-hook-form-input 已合并到主存储库中并重命名为 Controller。

https://react-hook-form.com/api#Controller https://react-hook-form.com/api#Controller

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将react-hook-form与ant design或material UI一起使用 的相关文章

  • React 导航抽屉中的 React Native 显示模式

    我有一个应用程序 我希望当用户单击某些导航路线时在当前页面上显示模式 而不是导航到完全不同的页面 我现有的代码是 const DrawerNavigator gt return
  • 将字体导入 React 应用程序

    我正在尝试在我的应用程序中使用 Roboto 字体 但遇到了困难 I did npm install save typeface roboto并添加了import typeface roboto 到我的 React 组件 但仍然无法改变我的
  • 使用继承的 ES6 React 类时未触发 componentDidMount 方法

    我试图在 React 中使用 ES6 类 并希望所有组件都继承某些方法 但是一旦我尝试扩展扩展 React Component 类的组件 componentDidMount 方法就不会触发 因此什么也不会发生被渲染 我正在使用的代码 基础组
  • React 中模型更改 11 次后 Froala 编辑器崩溃

    我在没有身份的情况下在线构建了一个简单的编辑器 在后端实现Node JS 与 Socket IO MongoDB 以及客户端使用React连接Socket IO 为了创建编辑器 我使用了弗罗拉编辑 https www froala com
  • Webpack 加载器与插件;有什么不同?

    webpack 中的加载器和插件有什么区别 The 插件文档 https webpack github io docs using plugins html只是说 使用插件添加通常与 webpack 中的捆绑包相关的功能 我知道 babel
  • React 包的 CDN 链接以及在使用 React 时如何使用 CDN 中的脚本导入它

    我尝试在没有 NPM 和其他工具的情况下使用 React 而是通过添加 CDN 链接来使用它 但是如何导入依赖包 例如useState hook 如果它是通过另一个脚本标签添加的 那么它的 CDN 链接是什么 下面是我的代码
  • 如何使用 Typescript 从 mui 扩展调色板

    我正在尝试扩展 mui 提供的调色板 覆盖主色 次要颜色等效果很好 但如果我想在之后创建一组自定义颜色 我不知道如何使其工作 有很多没有打字稿的例子 但是当这个人进入游戏时 事情就变得更加棘手 假设我有这个 主题 tsx palette p
  • 如何在反应导航中将道具传递给“屏幕”/组件

    我对一般编程相当陌生 甚至对 JS 和 React Native 还比较陌生 但我已经为此工作了一整天 但我仍然没有弄清楚 所以我求助于 Stack Overflow 希望有人能帮助我可以帮我 基本上我想要完成的是设置其他Component
  • 类型错误:无法读取未定义的属性“存在”

    我正在尝试为 jsx 文件编写一个测试用例 在此我能够传递 proptypes 但不是我正确传递 proptypes 的地方 当我运行测试用例时出现错误 下面提供我的错误 测试用例和代码 类型错误 无法读取未定义的属性 存在 不知道如何让它
  • 如何删除默认的故事书画布样式?

    Storybook 将默认样式应用于故事画布 iframe 这使得我的故事无法呈现应有的样子 如何摆脱 Storybook 的默认样式 例如 这是默认样式h2元素 通过 Storybook 的 page css 那个的来源page css
  • 对大数据块进行反应非阻塞渲染

    最近我开始学习反应并想知道是否有某种模式可以用于大数据的非阻塞 UI 线程渲染 比方说 我们采取这个例子 https www mendix com tech blog making react reactive pursuit high p
  • ReactJs - 是否可以根据组件树的状态设置 url 或查询字符串

    我有一个组件 其中有多个嵌套组件 特别是选项卡 药丸等 任何时候都无法看到所有组件 我希望能够根据 URL 参数 或 URL 设置它们的默认状态 属性 但我不清楚如何在 React 中实现这一点 例如 我有一个带有两个选项卡的组件 引导程序
  • 可选链接在 create-react-app 中不起作用

    In a create react app项目 我正在使用 babel plugin proposal optional chaining在我的 babelrc中 但是 我有这个错误 Module parse failed Unexpect
  • DevSettings.reload() 用于 React Native 中的注销

    问题 我正在将混合应用程序的注销功能从本机迁移到反应本机 要求 它可以在生产环境和设备上运行 它导航到应用程序的根屏幕 登录屏幕 它清除 redux 存储 很高兴有 它会取消任何飞行中的请求 最初 我们计划做这样的事情 如何重置 redux
  • 如何在reactjs中重新加载组件(页面的一部分)?

    我当时正在做反应项目 当我们单击重新加载按钮时 我试图重新加载组件 我实现了 onClick 函数 如下所示 但它正在重新加载整个窗口 我只想重新加载该类组件 而不是整个窗口 谁能帮我解决这个问题吗 refreshPage window l
  • 在 React 中禁用 Material-UI 生产 css 类名

    我正在使用 Material UI for React 并且我想在以下情况下禁用它处理类名的方式 NODE ENV production 例如 开发 MuiAppBar root 12 制作 jss12 我希望生产类名称与开发中使用的类相同
  • React Query useInfiniteQuery 使单个项目无效

    使用 useInfiniteQuery 时如何使单个项目无效 这是一个演示我想要实现的目标的示例 假设我有一个成员列表 每个成员都有一个关注按钮 当我按下 关注 按钮时 会单独调用服务器来标记给定用户正在关注另一个用户 此后 我必须使整个无
  • useEffect 中的 useState 不更新状态

    我是 React Hooks 新手 正在使用 React 16 13 1 我要实施Auth能够处理登录的组件 但似乎没有更新状态currentUser正确地 尽管setCurrentUser使用响应对象调用 这段代码有什么问题 import
  • SyntaxError:无法在动态导入 Nextjs 的模块外部使用 import 语句

    我遵循了SunEditor的文档 它是这样的 import React from react import dynamic from next dynamic import suneditor dist css suneditor min
  • JSX 中的混合运算符

    我想在 JSX 中使用混合运算符 例如 datas datas map function data i return

随机推荐