react-hook-form / codemod

Migrate React Hook Form V6 to V7 made simple.
MIT License
26 stars 7 forks source link

useTypedController #6

Open lionskape opened 3 years ago

lionskape commented 3 years ago

Describe the solution you'd like replace such lines:

import { useTypedController } from '@hookform/strictly-typed';
...
const TypedController = useTypedController<DealPlacementPositionValue>({ control });
...
<TypedController ... />
...

with

import { Controller } from 'react-hook-form';
...
<Controller contol={control} render={({field})} ... />
...

Additional context We can create codemod for TypedController (from @hookform/strictly-typed package). It was working very similar way as a new Controller.

TODO: Handle new structure of render properties

jorisre commented 3 years ago

Thanks @lionskape Do you have more example to migrate ? I think it's hard to handle all uses cases. We can use useController too in replacement of useTypedController

@bluebill1049 what's your thoughts ?

bluebill1049 commented 3 years ago

I am not codemod expert, I would assume migrate useTypedController would be tricky due to the input name itself is an array.

lionskape commented 3 years ago

@jorisre Unfortunately, useController is not a replacement of useTypedController. useTypedController creates a component, but useController creates an object.

@bluebill1049 can you explain, what is a problem with name? Seems like we have to change array notation to the template string.

By the way - it would be very useful, because useTypedController will no longer be maintained https://github.com/react-hook-form/strictly-typed/issues/29#issuecomment-792257452

bluebill1049 commented 3 years ago

@bluebill1049 can you explain, what is a problem with name? Seems like we have to change array notation to the template string.

That's the problem which you have described, I think for any exiting useTypedControlled, you will have to manually convert to just useController.