الدرس الواحد والعشرون: بناء المكونات القابلة لإعادة الاستخدام (Reusable Components)
في هذا الدرس، سنتعلم كيفية بناء مكونات React قابلة لإعادة الاستخدام، وهي مكونات يمكن استخدامها في أجزاء مختلفة من التطبيق دون الحاجة إلى إعادة كتابتها. سنستعرض كيفية جعل المكونات مرنة من خلال استخدام props و defaultProps، كما سنتناول مفهوم DRY Principle (Don’t Repeat Yourself) لتقليل التكرار في الكود.
1. كيفية تصميم مكونات قابلة لإعادة الاستخدام
المكونات القابلة لإعادة الاستخدام هي المكونات التي يمكن استخدامها في أكثر من مكان داخل التطبيق، مما يقلل من التكرار ويسهل الصيانة. لتحقيق ذلك، يجب أن تكون المكونات مرنة بما يكفي لتقبل متغيرات مختلفة من البيانات والخصائص.
الخطوات الأساسية لبناء مكونات قابلة لإعادة الاستخدام:
- فصل الوظائف: يجب أن يكون لكل مكون وظيفة واحدة ومحددة، ولا يجب أن يتداخل مع وظائف مكونات أخرى.
- استخدام
props
: يجب أن يكون المكون مرنًا بحيث يمكن تمرير البيانات له عبرprops
. - التعامل مع القيم الافتراضية: يمكن تحديد القيم الافتراضية للـ
props
باستخدامdefaultProps
. - إعطاء المكونات أسماء معبرة: اختر أسماء مكونات توضح الغرض منها بوضوح لتسهيل إعادة استخدامها.
مثال على مكون قابل لإعادة الاستخدام:
import React from 'react';
// مكون Button قابل لإعادة الاستخدام
function Button({ label, onClick, color = 'blue' }) {
return (
<button
onClick={onClick}
style={{ backgroundColor: color, padding: '10px', borderRadius: '5px' }}
>
{label}
</button>
);
}
export default Button;
الشرح:
label
: هو نص الزر الذي سيتم عرضه.onClick
: هو الدالة التي سيتم استدعاؤها عند النقر على الزر.color
: هو لون الزر. إذا لم يتم تمرير قيمة، فسيتم استخدام اللون الافتراضي “أزرق”.
2. كيفية استخدام props
و defaultProps
لجعل المكونات مرنة
في React، props
هي الطريقة التي نمرر بها البيانات إلى المكونات. عند بناء مكونات قابلة لإعادة الاستخدام، يجب أن نصمم المكونات بحيث يمكن تعديلها باستخدام props
. كما يمكننا استخدام defaultProps
لتحديد القيم الافتراضية للـ props
إذا لم يقم المستخدم بتمريرها.
كيفية استخدام defaultProps
:
// مكون Button مع defaultProps
function Button({ label, onClick, color }) {
return (
<button
onClick={onClick}
style={{ backgroundColor: color, padding: '10px', borderRadius: '5px' }}
>
{label}
</button>
);
}
// تحديد القيم الافتراضية للـ props
Button.defaultProps = {
color: 'green', // القيمة الافتراضية للون
};
export default Button;
الشرح:
defaultProps
: يتم تعيين القيم الافتراضية للـprops
في حال لم يتم تمريرها عند استخدام المكون. في هذا المثال، إذا لم يتم تحديدcolor
عند استخدام الزر، فسيتم استخدام اللون الأخضر.
3. بناء مكونات متوافقة مع DRY Principle (Don’t Repeat Yourself)
مبدأ DRY (Don’t Repeat Yourself) هو أحد المبادئ الأساسية في البرمجة الذي يشير إلى ضرورة تجنب تكرار الكود. عند بناء مكونات قابلة لإعادة الاستخدام، يجب أن نتجنب تكرار الكود غير الضروري.
كيفية تطبيق مبدأ DRY في React:
- استخدام المكونات المشتركة: لا تكرر الكود في أماكن متعددة داخل التطبيق. بدلاً من ذلك، أنشئ مكونات صغيرة وقابلة لإعادة الاستخدام.
- استخدام
props
وdefaultProps
لتخصيص المكونات دون الحاجة إلى إعادة كتابة الكود. - استخدام الحلقات أو الدوال المساعدة لتكرار العناصر أو العمليات داخل المكونات.
مثال على مكون يعكس مبدأ DRY:
import React from 'react';
// مكون Input عام
function Input({ label, type = 'text', value, onChange }) {
return (
<div>
<label>{label}</label>
<input type={type} value={value} onChange={onChange} />
</div>
);
}
// مكون Form يستخدم Input مكرر
function Form() {
const [name, setName] = React.useState('');
const [email, setEmail] = React.useState('');
const handleNameChange = (e) => setName(e.target.value);
const handleEmailChange = (e) => setEmail(e.target.value);
return (
<form>
<Input label="Name" value={name} onChange={handleNameChange} />
<Input label="Email" value={email} onChange={handleEmailChange} />
</form>
);
}
export default Form;
الشرح:
- تم إنشاء مكون
Input
عام يمكن إعادة استخدامه داخل مكونات أخرى. - بدلاً من تكرار الشيفرة الخاصة بنموذج المدخلات، استخدمنا مكون
Input
في نموذجForm
لتمرير البيانات الخاصة بكل حقل.
4. أفضل الممارسات لبناء المكونات القابلة لإعادة الاستخدام
- اجعل المكونات مرنة: حاول جعل المكونات مرنة بقدر الإمكان باستخدام
props
بحيث يمكن تخصيص سلوكها عند الحاجة. - تجنب التكرار: إذا كنت تجد نفسك تكرر الكود نفسه في أماكن مختلفة، فهذا مؤشر على أنك بحاجة إلى بناء مكون عام يمكن إعادة استخدامه.
- استخدام
defaultProps
لتوفير القيم الافتراضية للـprops
. - اختبار المكونات: تأكد من أن المكونات التي تبنيها تعمل بشكل صحيح في جميع السياقات التي سيتم استخدامها فيها.
5. الختام
بناء مكونات React قابلة لإعادة الاستخدام ليس فقط يساعد في تقليل التكرار داخل التطبيق، بل أيضًا يعزز من قابلية الصيانة وسهولة التوسع في المستقبل. باستخدام props
و defaultProps
بشكل فعال، يمكننا إنشاء مكونات مرنة وسهلة الاستخدام. وعندما نتبع مبدأ DRY، فإننا نحقق كودًا أكثر تنظيمًا وأداءً أفضل.
اكتشاف المزيد من كود التطور
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.