我正在使用 React 和 react-hook-form 库构建 web 应用程序。我想创建表单,其中某些字段的更改会触发某些事件。所以我需要通过自定义 onChange
但是,从 v7.0 开始我不能使用 onChange
,因为 register
使用它自己的 onChange
。
import React from 'react'
import { useForm } from 'react-hook-form'
const MyForm = () => {
const form = useForm()
const onChangeFirst = value => console.log('First:', value)
const onChangeSecond = value => console.log('Second:', value)
return (
<form onSubmit={form.handleSubmit(vals => null)}>
<input {...register('first')} />
<input {...register('second')} />
</form>
)
}
如何将 onChangeFirst
传递给 first
输入并将 onChangeFirst
传递给 second
输入?
答案 0 :(得分:2)
有两种方法可以在输入更改时触发 onChange
。
1/ 带有 Controller 组件(推荐)
const onChangeFirst = value => console.log('First:', value)
<Controller
control={control}
name="first"
render={({field}) => (
<input {...field} onChange={e => {
onChangeFirst(field.value);
field.onChange(e);
}} />
)}
/>
2/ 带有 useWatch 钩子
const second = useWatch({
control,
name: 'second'
});
useEffect(() => {
console.log('Second:', second)
}, [second])