首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React hook form:如何在React Hook Form版本7.0上使用onChange

React hook form:如何在React Hook Form版本7.0上使用onChange
EN

Stack Overflow用户
提问于 2021-04-04 05:42:53
回答 4查看 12.1K关注 0票数 13

以前我常常这样写:

代码语言:javascript
复制
<input className="form-control" name="productImage" type='file' onChange={handleImageUpload} ref={register({ required: true })} />

在更新之后,我必须这样写:

代码语言:javascript
复制
<input className="form-control" type="file" {...register('productImage', { required: true })} />

如何在更新版本的React Hook窗体上使用onChange={handleImageUpload}?下面是迁移docs

请原谅我在提问方式上的错误。我对这些东西还很陌生。谢谢。

EN

回答 4

Stack Overflow用户

发布于 2021-10-05 10:29:52

https://github.com/react-hook-form/react-hook-form/releases/tag/v7.16.0

V7.16.0为自定义onChange引入了这个新的API。

代码语言:javascript
复制
<input
  type="text"
  {...register('test', {
    onChange: (e) => {},
    onBlur: (e) => {},
  })}
/>
票数 18
EN

Stack Overflow用户

发布于 2021-07-23 23:56:47

register documentation https://react-hook-form.com/api/useform/register中,示例位于Custom onChange, onBlur部分:

代码语言:javascript
复制
// onChange got overwrite by register method
<input onChange={handleChange} {...register('test')} />

// register's onChange got overwrite by register method
<input {...register('test')} onChange={handleChange}/>

const firstName = register('firstName', { required: true })
<input 
  onChange={(e) => {
    firstName.onChange(e); // method from hook form register
    handleChange(e); // your method
  }}
  onBlur={firstName.onBlur}
  ref={firstName.ref} 
/>

因此,对于你的情况:

代码语言:javascript
复制
const productImageRegister = register("productImage", {required: true})
<input className="form-control"
       type="file"
       {...productImageRegister }
       onChange={e => {
           productImageRegister.onChange(e);
           handleImageUpload(e);
       }} />
票数 3
EN

Stack Overflow用户

发布于 2021-07-13 19:49:23

对我来说,装饰解决方案起作用了。

代码语言:javascript
复制
const fieldRegister = register("productImage", {required: true})
const origOnChange = fieldRegister.onChange
fieldRegister.onChange = (e) => {
    const res = origOnChange(e)
    const value = e.target.value
    // do something with value
    return res
}

对于字段声明,使用

代码语言:javascript
复制
<input {...fieldRegister}/>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66936135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档