admin管理员组

文章数量:1420187

I'd need to add custom handler in the onChange event of a checkbox, however, doing so onChange won't reflect to react-hook-form.

I've followed the instructions how to do custom onChange by following the chapter

Custom onChange, onBlur: ​ /

However cannot make it work.

Seeing in the DevTool the first checkbox change reflects to form just fine however the latter with a custom handler does not.

...
const subscribeToNewsLetter = register('subscribeToNewsLetter')
...
<div>
  ​<label> I consent </label>
  ​<input            
    ​type="checkbox"
    ​{...register('consent')}  //This checkbox without any custom handler works fine
  ​/>
​</div>

​<div>
  ​<label>Subscribe to newsletter</label>
  ​<input            
    ​type="checkbox"
    ​onChange={(e) => {
      ​subscribeToNewsLetter.onChange(e); // This needs to do custom stuff in onChange
      ​handleChange(e);         // However doing so 
    ​}}                         // the change is not registered to hook-form
    ​onBlur={subscibeToNewLetter.onBlur}
    ​ref={subscibeToNewLetter.ref} 
  ​/>
</div>
...

I've been fiddling it here which illustrates the problem the best.

I'd need to add custom handler in the onChange event of a checkbox, however, doing so onChange won't reflect to react-hook-form.

I've followed the instructions how to do custom onChange by following the chapter

Custom onChange, onBlur: ​ https://react-hook-form./api/useform/register/

However cannot make it work.

Seeing in the DevTool the first checkbox change reflects to form just fine however the latter with a custom handler does not.

...
const subscribeToNewsLetter = register('subscribeToNewsLetter')
...
<div>
  ​<label> I consent </label>
  ​<input            
    ​type="checkbox"
    ​{...register('consent')}  //This checkbox without any custom handler works fine
  ​/>
​</div>

​<div>
  ​<label>Subscribe to newsletter</label>
  ​<input            
    ​type="checkbox"
    ​onChange={(e) => {
      ​subscribeToNewsLetter.onChange(e); // This needs to do custom stuff in onChange
      ​handleChange(e);         // However doing so 
    ​}}                         // the change is not registered to hook-form
    ​onBlur={subscibeToNewLetter.onBlur}
    ​ref={subscibeToNewLetter.ref} 
  ​/>
</div>
...

I've been fiddling it here which illustrates the problem the best. https://stackblitz./edit/react-hook-form-fiddling-zlnhzs

Share Improve this question asked Aug 5, 2021 at 6:06 anmatikaanmatika 1,7216 gold badges23 silver badges30 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 3

You've to update the input like that:

<input
  type="checkbox"
  {...subscibeToNewLetter}
  onChange={e => {
    subscibeToNewLetter.onChange(e);
    handleChange(e);
  }}
/>

本文标签: javascriptReacthookform custom onChange handler in checkbox gt change is not registeredStack Overflow