This is a great content, well done. Could you create a slightly complex examle. Lets say there is a drop down and first validation rule is that an option must be selected, it can not be null which is a first option. Depending on a selection different fields are displayed according to some logic. If for example email is selected from the drop down additional email field is displayed and it must be valid email. If telephone is selected then it must be valid phone number etc. I am curious to know how will zod schema look in that case because we have default null state for the drop down and in the case we have more drop downs with different "branching". Thank you.
Great example. I had something similar when product had the bright idea to still show the fields but disabled. Apparently this really complicates things since now you have to disable the validation rules from triggering on disabled fields.
its a great tutorial Austin, however I strongly feel you must have adopted some design library as the implementation of Tailwind CSS made this look so clumsy and not on the point to what the video trying to convey. I mostly prefer MUI or Chakra UI for simple and elegant design of forms.
Thanks for watching Hari. While UI libraries like Material UI are useful for creating good looking designs quickly, they cause some extra complexity when integrating form libraries such as react-hook-form.
@@AustinShelby Thanks so much for your response. You are absolutely right. While I was working on a dynamic form similar to the one in the video, I had to disable form fields after checkbox however @Mui latest version's Checkbox is not allowing that functionality.
Thank you very much Sir. I learned a lot. I applied this to checkout page where checkbox is biling address is same with shipping address or not. Thank you very much
TypeScript is correct in this case. If the checkbox is not checked there won't be a property email in the formState.errors object. To fix this, you have to first check if the object has the email key like this: "email" in formState.errors && formState.errors.email
This is great, but what if the form has over 20 fields, I would need to create a copy of it for every version, is there a more 'versatile' way of achieving this? Maybe when setting the definition of a type in the schema, can I co-require a field, instead of creating different possible versions of it? I'm new to zod as you can tell...
Nevermind, I found a more dynamic way to do it, just creating the z.object with the diff, and merging the base schema, so I don't have to create copies for every version.
This is a great content, well done. Could you create a slightly complex examle. Lets say there is a drop down and first validation rule is that an option must be selected, it can not be null which is a first option. Depending on a selection different fields are displayed according to some logic. If for example email is selected from the drop down additional email field is displayed and it must be valid email. If telephone is selected then it must be valid phone number etc. I am curious to know how will zod schema look in that case because we have default null state for the drop down and in the case we have more drop downs with different "branching". Thank you.
Great tutorial!! Your videos are really helpful while I'm learning to use Zod :)
Great to hear that Animan!
cheers dude, I was struggling on this problem for a while, your content helped immensely
Glat to have helped you solve your problem!
Appreciate the content Austin, subbed and liked! Hope you can continue to create more videos like this
Great example. I had something similar when product had the bright idea to still show the fields but disabled. Apparently this really complicates things since now you have to disable the validation rules from triggering on disabled fields.
Thank you, Austin. Your tutorial is very clear and helpful.
its a great tutorial Austin, however I strongly feel you must have adopted some design library as the implementation of Tailwind CSS made this look so clumsy and not on the point to what the video trying to convey. I mostly prefer MUI or Chakra UI for simple and elegant design of forms.
Thanks for watching Hari. While UI libraries like Material UI are useful for creating good looking designs quickly, they cause some extra complexity when integrating form libraries such as react-hook-form.
@@AustinShelby Thanks so much for your response. You are absolutely right. While I was working on a dynamic form similar to the one in the video, I had to disable form fields after checkbox however @Mui latest version's Checkbox is not allowing that functionality.
Great tutorial. If I need to store objects removed from useFieldArray remove method to another array for subsequent use. How can I achieve this?
Amazing! Thank you for the content!
amazing thank you for this could you make one for the fields coming from the db or a json file
thank you for help ,you are great teacher❤
Clean !😀... Thanks
Thank you very much Sir. I learned a lot. I applied this to checkout page where checkbox is biling address is same with shipping address or not. Thank you very much
Hey Mike it's awesome to hear that this video helped you! Thanks for watching.
How do you access errors on the email field? Accessing formstate.errors.email results in a "property does not exist" TypeScript error
TypeScript is correct in this case. If the checkbox is not checked there won't be a property email in the formState.errors object. To fix this, you have to first check if the object has the email key like this:
"email" in formState.errors && formState.errors.email
This is great, but what if the form has over 20 fields, I would need to create a copy of it for every version, is there a more 'versatile' way of achieving this? Maybe when setting the definition of a type in the schema, can I co-require a field, instead of creating different possible versions of it? I'm new to zod as you can tell...
Nevermind, I found a more dynamic way to do it, just creating the z.object with the diff, and merging the base schema, so I don't have to create copies for every version.
@@andrescuberosalas I'm glad you found the solution for it and thanks for sharing it with everyone 👍
@@andrescuberosalas Can you give an example of what you did here? I might be able to use that for my issue.
Why you stopped making videos? Your videos are so helpful!
Honestly just pure laziness. I should just probably get back to it as people seem to be enjoying these videos.
did you delete my comment? Jeesh.
I did not. I saw your comment. It was something about extending a more complex schema based on a drop down such as a subscription, right?