"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > إتقان تصميم المكونات في رد الفعل: من الأساسيات إلى أفضل الممارسات

إتقان تصميم المكونات في رد الفعل: من الأساسيات إلى أفضل الممارسات

تم النشر بتاريخ 2024-10-31
تصفح:389

Mastering Component Design in React: From Basics to Best Practices

أصبح React إطار عمل للمطورين الذين يتطلعون إلى إنشاء تطبيقات ويب ديناميكية وتفاعلية. تسمح بنيتها القائمة على المكونات للمطورين بإنشاء كتل بناء قابلة لإعادة الاستخدام تجعل تطوير واجهة المستخدم أكثر قابلية للإدارة وقابلة للتطوير. ولكن لإتقان React حقًا، يعد فهم كيفية تصميم مكونات فعالة وقابلة لإعادة الاستخدام أمرًا أساسيًا. في هذه المدونة، سنستكشف أساسيات تصميم المكونات والأنماط المتقدمة وأفضل الممارسات لمساعدتك في إنشاء تطبيقات React قابلة للتطوير.

1. الأساس: فهم مكونات التفاعل

في جوهره، مكون React هو وظيفة أو فئة JavaScript تقبل المدخلات (الدعائم) وترجع JSX، الذي يصف ما يجب أن يظهر على الشاشة.

هناك نوعان رئيسيان من المكونات:

  • المكونات الوظيفية: تم تقديمها كمكونات عديمة الحالة، وقد تطورت للتعامل مع الحالة والآثار الجانبية من خلال React Hooks. تفضل معظم قواعد أكواد React الحديثة المكونات الوظيفية لبساطتها ومزايا أدائها.

  const Button = ({ label }) => ;


  • مكونات الفئة: كانت هذه هي الطريقة الأساسية للتعامل مع حالة المكون ولكنها فقدت شعبيتها مع ظهور الخطافات. ومع ذلك، فإن فهمها يمكن أن يكون مفيدًا عند العمل على المشاريع القديمة.

class Button extends React.Component {
  render() {
    return ;
  }
}


2. بناء مكونات قابلة لإعادة الاستخدام

المكونات القابلة لإعادة الاستخدام هي حجر الزاوية في أي تطبيق React قابل للتطوير. فيما يلي بعض المبادئ التي يجب اتباعها:

أ. استخدم الدعائم بشكل فعال

تسمح الخاصيات بتدفق البيانات من المكونات الأصلية إلى المكونات الفرعية. عند تصميم مكونات قابلة لإعادة الاستخدام، تأكد من قبولها للدعائم الديناميكية لجعلها مرنة لمختلف السياقات.

مثال: مكون الزر مع الدعائم الديناميكية


const Button = ({ label, onClick, size = 'medium', variant = 'primary' }) => {
  return (
    
  );
};


في هذا المثال، يكون الزر قابلاً لإعادة الاستخدام لأنه يقبل الدعائم مثل التسمية وonClick والحجم والمتغير، مما يجعله قابلاً للتكيف عبر التطبيق.

ب. التكوين على الميراث

بدلاً من توسيع المكونات، استخدم التركيب لإنشاء مكونات أكثر تعقيدًا. يتوافق هذا النهج مع فلسفة React المتمثلة في جعل المكونات وحدات مستقلة ومنفصلة.

مثال: إنشاء شكل مشروط باستخدام زر


const Modal = ({ isOpen, onClose, children }) => {
  if (!isOpen) return null;

  return (
    
{children}
); };

يتكون المكون المشروط من مكون الزر لإنشاء شكل مشروط يمكن إعادة استخدامه ويمكن ملؤه بأي محتوى (أطفال).

3. أنماط المكونات المتقدمة

مع نمو تطبيقك، قد لا تكون المكونات البسيطة كافية. فيما يلي بعض الأنماط المتقدمة لإدارة التعقيد.

أ. المكونات ذات الترتيب العالي (HOCs)

المكون ذو الترتيب العالي هو دالة تأخذ مكونًا وترجع مكونًا جديدًا، وغالبًا ما تحقن دعائم أو منطقًا إضافيًا.

مثال: تسجيل المخصصات


const withLogging = (WrappedComponent) => {
  return (props) => {
    console.log('Component rendered with props:', props);
    return ;
  };
};

const EnhancedButton = withLogging(Button);


يغلف هذا المكون ذو الترتيب الأعلى الزر ويسجل دعائمه كلما تم عرضه، مما يضيف وظائف إضافية دون تعديل المكون الأصلي.

ب. تقديم الدعائم

يتضمن هذا النمط تمرير دالة كدعم لمشاركة المنطق بين المكونات.

مثال: إحضار مكون باستخدام دعائم العرض


const Fetch = ({ url, render }) => {
  const [data, setData] = React.useState(null);

  React.useEffect(() => {
    fetch(url)
      .then((response) => response.json())
      .then((data) => setData(data));
  }, [url]);

  return render(data);
};

// Usage
{JSON.stringify(data)}
} />;

هنا، لا يهتم Fetch بكيفية عرض البيانات. بدلاً من ذلك، يقوم بتفويض العرض إلى خاصية العرض، مما يجعله مرنًا للغاية.

ج. خطافات مخصصة

تعد الخطافات المخصصة طريقة قوية لمشاركة المنطق عبر المكونات مع إبقائها نظيفة وقابلة للقراءة. تتيح لك الخطافات تغليف المنطق الذي يمكن إعادة استخدامه بين المكونات.

مثال: خطاف مخصص لعرض النافذة


const useWindowWidth = () => {
  const [width, setWidth] = React.useState(window.innerWidth);

  React.useEffect(() => {
    const handleResize = () => setWidth(window.innerWidth);
    window.addEventListener('resize', handleResize);

    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return width;
};

const MyComponent = () => {
  const width = useWindowWidth();
  return 
Window width: {width}
; };

يمكن استخدام خطاف useWindowWidth هذا في أي مكون لتتبع حجم النافذة دون تكرار المنطق.

4. إدارة الدولة بشكل فعال

تعد إدارة الحالة أحد الجوانب الأكثر أهمية في تصميم مكونات React. بينما تعمل الحالة المحلية بشكل جيد مع التطبيقات الصغيرة، قد تتطلب التطبيقات الأكبر حجمًا حلاً أكثر قوة.

أ. رفع الدولة لأعلى

عندما تحتاج مكونات متعددة إلى مشاركة الحالة، فإن الحل هو نقل (أو "رفع") الحالة إلى أقرب سلف مشترك.


const ParentComponent = () => {
  const [count, setCount] = React.useState(0);

  return (
    
); };

ب. واجهة برمجة تطبيقات السياق

تعد واجهة برمجة تطبيقات السياق مفيدة لتمرير البيانات العالمية عبر شجرة المكونات دون الحاجة إلى الحفر.


const ThemeContext = React.createContext();

const Parent = () => {
  const [theme, setTheme] = React.useState('light');

  return (
    
  );
};

const Child = () => {
  const theme = React.useContext(ThemeContext);
  return 
The theme is {theme}
; };

تعتبر واجهة برمجة تطبيقات السياق رائعة للبيانات العالمية مثل السمات أو بيانات المستخدم أو الإعدادات المحلية.

ج. استخدام مكتبات إدارة الدولة

بالنسبة للتطبيقات الأكبر حجمًا، يمكن أن تساعدك المكتبات مثل Redux أو Zustand في إدارة الحالات المعقدة عبر تطبيقك بكفاءة. يعد Redux رائعًا للتطبيقات التي تتطلب حالة مركزية، بينما يقدم Zustand حلاً خفيف الوزن.

5. تحسين الأداء

مع نمو تطبيقك، يمكن أن يصبح الأداء مشكلة. فيما يلي بعض التقنيات للحفاظ على سرعة المكونات واستجابتها.

أ. التذكير باستخدام React.memo

يمنع React.memo عمليات إعادة العرض غير الضرورية عن طريق حفظ مخرجات المكون بناءً على دعائمه.


const ExpensiveComponent = React.memo(({ data }) => {
return

{data}
;
});




ب. استخدام رد الاتصال و useMemo

تساعد هذه الخطافات في حفظ الوظائف والقيم، مما يضمن عدم إعادة إنشائها في كل عرض ما لم تتغير التبعيات.


const MyComponent = ({ onClick }) => {
const handleClick = React.useCallback(() => {
console.log('Button clicked!');
}, []);

return ;
};




خاتمة

يعد إتقان تصميم مكونات React أمرًا ضروريًا لبناء تطبيقات ويب فعالة وقابلة للتطوير. من خلال التركيز على المكونات القابلة لإعادة الاستخدام، واعتماد أنماط متقدمة مثل HOCs والخطافات المخصصة، وإدارة الحالة بفعالية، وتحسين الأداء، يمكنك إنشاء تطبيقات مرنة وقابلة للصيانة.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/ishanbagchi/mastering-component-design-in-react-from-basics-to-best-practices-1gih?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3