ReactJS-এ ফর্ম ব্যবস্থাপনা একটি গুরুত্বপূর্ণ বিষয়, কারণ ফর্মে ডাটা ইনপুট, ভ্যালিডেশন, এবং সাবমিশন ইত্যাদি কাজের জন্য কমপ্লেক্স লজিকের প্রয়োজন হয়। React-এ ফর্ম পরিচালনা করার জন্য কিছু জনপ্রিয় থার্ড-পার্টি লাইব্রেরি রয়েছে যা আপনাকে সহজ এবং কার্যকরীভাবে ফর্ম তৈরি, ডাটা হ্যান্ডলিং, ভ্যালিডেশন ইত্যাদি করতে সাহায্য করে।
এই টিউটোরিয়ালে, আমরা React Hook Form, Formik, এবং React Final Form এর ব্যবহার আলোচনা করব।
১. React Hook Form
React Hook Form একটি লাইটওয়েট এবং পারফরম্যান্ট ফর্ম লাইব্রেরি যা ফর্মের স্টেট ও ভ্যালিডেশন হ্যান্ডেল করতে React hooks ব্যবহার করে। এটি খুব কম কোডে ফর্ম ম্যানেজমেন্ট সহজ করে এবং React কম্পোনেন্টে সহজে ইন্টিগ্রেট করা যায়।
React Hook Form ইনস্টল করা:
npm install react-hook-form
React Hook Form ব্যবহার করা:
import React from 'react';
import { useForm } from 'react-hook-form';
function MyForm() {
const { register, handleSubmit, formState: { errors } } = useForm();
const onSubmit = data => {
console.log(data);
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<div>
<label>Name:</label>
<input {...register('name', { required: true })} />
{errors.name && <p>Name is required</p>}
</div>
<div>
<label>Email:</label>
<input {...register('email', { required: true, pattern: /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ })} />
{errors.email && <p>Valid email is required</p>}
</div>
<button type="submit">Submit</button>
</form>
);
}
export default MyForm;
ব্যাখ্যা:
useFormhook থেকেregister,handleSubmit, এবংformStateব্যবহার করা হয়েছে।register: ফর্ম ইনপুটগুলিকে React Hook Form-এ নিবন্ধিত (register) করে।handleSubmit: ফর্ম সাবমিশনের জন্য হ্যান্ডলার।formState: { errors }: ইনপুটগুলির জন্য error হ্যান্ডলিং।
২. Formik
Formik হল একটি শক্তিশালী ফর্ম লাইব্রেরি যা React ফর্মের জন্য স্টেট ম্যানেজমেন্ট, ভ্যালিডেশন, এবং সাবমিশন হ্যান্ডলিং সহজ করে। এটি ফর্মের অবস্থা (state) পরিচালনার জন্য অভ্যন্তরীণ স্টেট ব্যবহার করে এবং আপনার ফর্মের ডাটা সমর্থন করে।
Formik ইনস্টল করা:
npm install formik
Formik ব্যবহার করা:
import React from 'react';
import { Formik, Field, Form, ErrorMessage } from 'formik';
function MyForm() {
return (
<Formik
initialValues={{ name: '', email: '' }}
validate={values => {
const errors = {};
if (!values.name) {
errors.name = 'Name is required';
}
if (!values.email) {
errors.email = 'Email is required';
} else if (!/\S+@\S+\.\S+/.test(values.email)) {
errors.email = 'Invalid email address';
}
return errors;
}}
onSubmit={(values) => {
console.log(values);
}}
>
<Form>
<div>
<label htmlFor="name">Name:</label>
<Field type="text" id="name" name="name" />
<ErrorMessage name="name" component="div" />
</div>
<div>
<label htmlFor="email">Email:</label>
<Field type="email" id="email" name="email" />
<ErrorMessage name="email" component="div" />
</div>
<button type="submit">Submit</button>
</Form>
</Formik>
);
}
export default MyForm;
ব্যাখ্যা:
- Formik: এটি ফর্মের জন্য স্টেট, ভ্যালিডেশন, এবং সাবমিশন হ্যান্ডলিং সরবরাহ করে।
- Field: প্রতিটি ইনপুট ফিল্ডের জন্য ব্যবহৃত হয়।
- ErrorMessage: ভ্যালিডেশন ত্রুটি প্রদর্শন করে।
- initialValues: ফর্মের ইনিশিয়াল ডাটা।
- validate: ফর্ম ভ্যালিডেশন ফাংশন।
৩. React Final Form
React Final Form একটি হালকা ফর্ম লাইব্রেরি যা স্টেট ম্যানেজমেন্ট এবং ভ্যালিডেশন সহজ করে এবং React-এ কাস্টম ফর্ম বানানোর জন্য বিভিন্ন বৈশিষ্ট্য প্রদান করে।
React Final Form ইনস্টল করা:
npm install final-form react-final-form
React Final Form ব্যবহার করা:
import React from 'react';
import { Form, Field } from 'react-final-form';
function MyForm() {
const onSubmit = (values) => {
console.log(values);
};
return (
<Form
onSubmit={onSubmit}
initialValues={{ name: '', email: '' }}
validate={values => {
const errors = {};
if (!values.name) {
errors.name = 'Name is required';
}
if (!values.email) {
errors.email = 'Email is required';
} else if (!/\S+@\S+\.\S+/.test(values.email)) {
errors.email = 'Invalid email address';
}
return errors;
}}
render={({ handleSubmit, form, submitting, pristine, values }) => (
<form onSubmit={handleSubmit}>
<div>
<label>Name:</label>
<Field name="name" component="input" type="text" />
</div>
<div>
<label>Email:</label>
<Field name="email" component="input" type="email" />
</div>
<button type="submit" disabled={submitting}>Submit</button>
</form>
)}
/>
);
}
export default MyForm;
ব্যাখ্যা:
Form: ফর্মের স্টেট এবং সাবমিশন হ্যান্ডলিং এর জন্য ব্যবহৃত হয়।Field: ইনপুট ফিল্ডের জন্য ব্যবহৃত হয়।onSubmit: ফর্ম সাবমিশনের সময় কলব্যাক ফাংশন।validate: ফর্মের ইনপুট ভ্যালিডেশন।
থার্ড-পার্টি লাইব্রেরির সুবিধা
- ফর্ম স্টেট ম্যানেজমেন্ট সহজ: এই লাইব্রেরিগুলি ফর্ম স্টেট এবং ডাটা আপডেটের প্রক্রিয়া সহজ করে।
- ভ্যালিডেশন সুবিধা: লাইব্রেরিগুলিতে সহজভাবে ভ্যালিডেশন পরিচালনা করা যায়, যা কাস্টম ভ্যালিডেশন ফাংশন তৈরির জন্য সহায়ক।
- কমপ্লেক্স ফর্ম হ্যান্ডলিং: বিভিন্ন ইনপুট ফিল্ড এবং ডাইনামিক ফর্ম এলিমেন্টের জন্য সহজ সমাধান প্রদান করে।
- UI কন্ট্রোল: এই লাইব্রেরিগুলি React কম্পোনেন্টে সমন্বিতভাবে কাজ করে এবং ইন্টিগ্রেটেড UI হ্যান্ডলিং এর সুবিধা দেয়।
সারাংশ
থার্ড-পার্টি ফর্ম লাইব্রেরি যেমন React Hook Form, Formik, এবং React Final Form ব্যবহার করে আপনি সহজে এবং কার্যকরভাবে React ফর্ম তৈরি ও পরিচালনা করতে পারেন। এগুলোর মাধ্যমে ফর্মের স্টেট, ভ্যালিডেশন, এবং ডাটা হ্যান্ডলিং আরও সহজ ও মেইন্টেনেবল হয়ে ওঠে।
Read more