javascript - 为 React Hook Form 和 watch() 自定义 onChange

标签 javascript reactjs forms react-hook-form

我正在尝试编写一个自定义的 onChangewatch 更改。

错误:

监视的 myValue 不会在下拉列表中注册更改。有什么想法吗?

根据API documentation , 这可以通过执行以下操作来实现:

export default function App() {
  const { register, watch } = useForm();

  const fruits = register("fruits");

  const myValue = watch("fruits", "default");

  return (
    <div className="App">
      <h1>{myValue}</h1>
      <select
        onChange={(e) => {
          fruits.onChange(e); // react hook form onChange
          console.log("Here would go the my onChange"); // my onChange
        }}
        onBlur={fruits.onBlur}
        ref={fruits.ref}
      >
        <option value="1Banana">Banana</option>
        <option value="1Kiwi">Kiwi</option>
        <option value="1Mango">Mango</option>
      </select>
    </div>
  );
}

你可以在这里找到上面的例子:

https://codesandbox.io/s/divine-rgb-mwiqn?file=/src/App.js

最佳答案

您没有将 name Prop 传递给您的 select。文档说你应该默认这样做:

<select {...register('fruits')}>

如果您记录 register('fruits') 返回的内容,您会在 onChange 之外看到一个 name prop, onBlurref。如果您将 name={fruits.name} 添加到您的 select,您将看到 watch 也在工作。

编辑:是的,目前文档中也缺少此内容。

关于javascript - 为 React Hook Form 和 watch() 自定义 onChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68438351/

相关文章:

javascript - IBM Worklight WL.JSONStore.QueryPart()。 json存储错误

javascript - 单元测试注入(inject)依赖关系,如 angularJS 中的服务 Controller

javascript - 从对象数组中提取数据(问题稍微复杂)

reactjs - 对已卸载组件中的 setState 使用react警告

c# - 如何在不隐藏控件的情况下调整窗口大小

javascript - 如何为与 ASP .Net MVC 包装器一起使用的 Kendo UI 进行 TDD

javascript - react + typescript : Property * is missing in type *

reactjs - 如何在我的 React 应用程序中仅显示我的 Register 组件

jquery - 使用表单选择日期jquery

ruby-on-rails - 为什么我得到方法未定义?