𝗕𝘂𝗹𝗹𝗲𝘁𝗽𝗿𝗼𝗼𝗳 𝗥𝗲𝗮𝗰𝘁 𝗙𝗼𝗿𝗺𝘀: 𝗭𝗼𝗱 & 𝗥𝗲𝗮𝗰𝘁 𝗛𝗼𝗼𝗸 𝗙𝗼𝗿𝗺
Forms B2B SaaS प्रोडक्ट्स का आधार होते हैं।
अधिकांश डेवलपर्स Forms को गलत तरीके से बनाते हैं। वे controlled components का उपयोग करते हैं। इसका मतलब है कि वे हर input को एक useState hook से जोड़ देते हैं।
इससे performance की समस्याएँ पैदा होती हैं।
यदि आपके form में 20 fields हैं, तो एक अक्षर टाइप करने से पूरे form का re-render ट्रिगर हो जाता है। 10 अक्षरों वाला नाम टाइप करने पर 10 बार full re-renders होते हैं। इससे कम क्षमता वाले (low-end) devices पर आपका app धीमा हो जाता है।
Manual validation भी एक समस्या है। हर field के लिए "if" statements लिखना काफी उलझन भरा होता है। इसमें TypeScript safety की कमी होती है।
आपको एक बेहतर तरीके की आवश्यकता है।
इसे ठीक करने के लिए React Hook Form और Zod का उपयोग करें।
React Hook Form, HTML refs के माध्यम से uncontrolled inputs का उपयोग करता है। डेटा DOM में रहता है। Form केवल तभी re-render होता है जब आवश्यक हो, जैसे कि जब कोई error दिखाई दे।
Zod आपके validation को संभालता है। यह आपके डेटा का सटीक shape परिभाषित करता है।
यहाँ workflow दिया गया है:
एक Zod schema परिभाषित करें। यह आपके single source of truth के रूप में कार्य करता है। यह runtime validation और TypeScript types दोनों प्रदान करता है।
zodResolverका उपयोग करें। यह React Hook Form को आपके Zod schema से जोड़ता है।registerfunction का उपयोग करें। यह निरंतर re-renders को ट्रिगर किए बिना आपके inputs को form से जोड़ता है।
इसके लाभ:
- Zero input lag. बड़े forms भी smooth रहते हैं।
- Type safety. आपका डेटा आपकी API expectations से मेल खाता है।
- कम code. आप manual validation logic लिखना बंद कर देते हैं।
React state से जूझना बंद करें। professional forms बनाने के लिए refs और schemas का उपयोग करें।
Source: https://dev.to/iprajapatiparesh/bulletproof-react-forms-zod-react-hook-form-205j