Reusable Create & Edit Form in React (React Hook Form, Zod)

Sdílet
Vložit
  • čas přidán 23. 04. 2024
  • 🚀 Project React → cosden.solutions/project-react
    Source Code → github.com/cosdensolutions/co...
    Join The Discord! → discord.cosden.solutions
    VSCode Theme | Font → Material Theme Darker | Menlo, Monaco "monospace"
    In this video I will show you how to create a reusable create & edit form in React using React Hook Form and Zod. We're going to be going into a form that is already created and we're going to add edit functionality to it in a way that's efficient and follows all of the React best practices and design patterns.

Komentáře • 43

  • @naziruadam3950
    @naziruadam3950 Před 14 dny +1

    Thanks for this piece. I think I'll have to follow this tut typing the code myself, that way, I'll understand it better.

  • @JohnSmith-gu9gl
    @JohnSmith-gu9gl Před 8 dny +1

    Great video but there is a problem.
    lets say you have a user form.
    if you want to update a user, password field is optional, so your types and validations have to know that.
    Maybe something like this:
    resolver: user ? zodResolver(updateUserValidator) : zodResolver(createUserValidator) ,
    Would be great to see how you would solve that.

  • @navedkhan6643
    @navedkhan6643 Před 12 dny

    Big fan of yours

  • @kevinmitchell6141
    @kevinmitchell6141 Před 14 dny +4

    Would be great to see some dynamic form content! It adds a lot of complexity I feel

    • @jitesh_khurana
      @jitesh_khurana Před 14 dny

      can be done by useFieldArray from react-hook-form

    • @kevinmitchell6141
      @kevinmitchell6141 Před 14 dny

      @@jitesh_khurana yes but my point is that it can be difficult to work with + not much examples of it in the wild

    • @thngzys
      @thngzys Před 13 dny +1

      I would advice against this. Have been using rhf in prod for couple of years. I will say it does not scale well with huge or dynamic forms. Better to have individual form instances for each section, then collate the data prior to submission.

    • @thngzys
      @thngzys Před 13 dny

      Also, maintenance is a pain.

    • @KartheekJavvajiKJ
      @KartheekJavvajiKJ Před 9 dny

      @@thngzys I have reached to a similar conclusion

  • @AviCharlop
    @AviCharlop Před 14 dny +6

    Nice idea and video thanks. Just one note, you are already using zod, parsing the user prop with zod would have made the spread for default values unnecessary and the logic a bit cleaner

    • @rezaz7167
      @rezaz7167 Před 9 dny +1

      Passing the parsed value as defaultValues?

    • @AviCharlop
      @AviCharlop Před 9 dny

      @@rezaz7167 exactly. Something like:
      defaultValues: user ? formSchema.parse(user) : undefined

  • @johndevnoza4223
    @johndevnoza4223 Před 8 dny

    i would love to see, react query with react hook form and zod. since imnt pro with this, react query has different approach with FORM when it comes to mutations, so i couldnt understand it by myself. anyway Great videos!

  • @serbanmarin-eusebiu
    @serbanmarin-eusebiu Před 14 dny +4

    The idea behind this video was very good and clear, but it would be more interesting if you would make a modal like with react-query under the hood. I’ve tried to create a such implementation, but it keeps falling for more than 2 use effects (linked data, one data depends on another). If you would like to create a video about this, I could give you access to the repository.

    • @lord_kh4n
      @lord_kh4n Před 14 dny

      Wouldn't simply providing a key should be possible?

    • @serbanmarin-eusebiu
      @serbanmarin-eusebiu Před 12 dny

      The base ideea is that you can provide a modal state, and a key for what you need, and when you open the modal, you pass to the react query the modal state and the key to enable the fetch request.

  • @violabg
    @violabg Před 14 dny +6

    Why didn’t use Controller from react-hook-form, for DatePicker and Select

  • @stefin1
    @stefin1 Před 14 dny +1

    Would you leave the file as is, or decompose it into smaller files?

  • @ptolemyhenson6838
    @ptolemyhenson6838 Před 9 dny +1

    How can you create a form to allow users to create a list of arbitrary length (preferably a heterogeneous list, allowing the user to add multiple input types) using this method?

  • @varshithgowdav9892
    @varshithgowdav9892 Před 10 dny

    Can u please make a video on persisting user data,I'm really confused what to use .There are multiple options like local storage,redux ..etc.

  • @rezaz7167
    @rezaz7167 Před 9 dny

    When I pass undefined to default values (in rhf) the browser on client component gives me this warning:
    Changed from uncontrolled to controlled input.
    But when i explicitly gives {title: “”, email:””} its ok. Can someone explain a better way to tackle this issue

  • @alitonoliveira1700
    @alitonoliveira1700 Před 14 dny

    How to deal with nested array? That would be awesome.

  • @jazzdestructor
    @jazzdestructor Před 10 dny

    Hey Cosden i have just one query with register onSubmit it scrolls to it and redirects to the specific field, how can i achieve validation, required, error and scrollTo for components that dont register?? i have seen something called that react hook form but i am not quite sure on it. please let me know what can be done here.

  • @navedkhan6643
    @navedkhan6643 Před 12 dny

    Can you make more video on clean code and SOLID principle

  • @imkir4n
    @imkir4n Před 14 dny

    Please add server action and error handling with this combo.

  • @akshayc3314
    @akshayc3314 Před 14 dny

    Your contents are great. Can you please cover some other tech stack apart from react. Like devops or backend .

  • @warrenpeace2557
    @warrenpeace2557 Před 14 dny +2

    Any coupon code for your course please 😮

  • @AhmedOsama5
    @AhmedOsama5 Před 14 dny

    really nice video, but I think you don't have to pass the default value for every input manually I think just can use the form default value better

    • @thngzys
      @thngzys Před 13 dny +1

      The reason why he had to pass manually is because he didn't use the Controller

    • @jazzdestructor
      @jazzdestructor Před 10 dny

      i think he could use getValues / watch instead of user Obj for consistency

    • @AhmedOsama5
      @AhmedOsama5 Před 9 dny

      using user data should be done once as default values that's the correct flow based on my experience any way the tutorial is more focused on another aspect and he did well about it
      @@jazzdestructor

    • @AhmedOsama5
      @AhmedOsama5 Před 9 dny

      yeb could be@@thngzys

  • @NikhilPatel-bq7ck
    @NikhilPatel-bq7ck Před 14 dny

    Have you ever made a video upon limitations of react-hook-forms and Formik?
    Is there any limitations when some more complex form with array type with multiple fields with some of theme as optional and some with lazy api call lets say some checks on db side and displaying validation like email exists.
    Such Comparison is bit rare in youtube. Everyone just shows very basic demos. Real usecase form are more complex and thats when only few quality content can help some to take decision which lib one should go with.
    If application is more complex lets say insurance company portal etc.

  • @dipanjanghosal1662
    @dipanjanghosal1662 Před 11 dny

    Please make a video on jwt authentication with Redux persist

  • @shakapaker
    @shakapaker Před 14 dny

    I would like to see how make add edit form with images

    • @jitx2797
      @jitx2797 Před 14 dny

      I am currently using bunnycdn to handle them

  • @petarmalamov2917
    @petarmalamov2917 Před 14 dny +3

    Isn't is better to pass an onSubmit function to the component, the form component doesn't need to know what happens to the submitted data it just interested if the data is valid and you can pass only the form data, not the entire user. That way in the future if there is a 3th action the form needs to do ( can't think of one now :D ) you can just change the on submit function that you pass to the component .

  • @VkParish
    @VkParish Před 14 dny

    First comment 😜