الدرس العشرون: تحسين الأداء في React
في هذا الدرس، سنتناول تقنيات تحسين الأداء في تطبيقات React وكيفية جعل التطبيقات أكثر سرعة وكفاءة. سنغطي بعض الأدوات والتقنيات التي يمكن استخدامها لتحسين تجربة المستخدم وتخفيف الحمل على المتصفح.
1. استخدام React.memo
لتحسين الأداء
React.memo
هي دالة تستخدم لتغليف المكونات Functional Components بحيث يتم تجنب إعادة الرندر غير الضروري إذا كانت الخصائص (props) التي يتم تمريرها إلى المكون لم تتغير.
كيف يعمل React.memo
؟
عند استخدام React.memo
، يقوم React بمقارنة خصائص المكون مع القيم السابقة. إذا كانت القيم قد تغيرت، سيتم إعادة رندر المكون، ولكن إذا كانت الخصائص نفسها كما كانت سابقًا، سيقوم React بتخزين المكون في الذاكرة ويعرض النسخة السابقة دون إجراء عملية إعادة الرندر.
مثال:
import React from 'react';
const MyComponent = React.memo(function MyComponent(props) {
console.log('Rendering MyComponent');
return <div>{props.name}</div>;
});
export default MyComponent;
في هذا المثال، MyComponent
سيكون مغلفًا بـ React.memo
. سيتم إعادة رندرة المكون فقط إذا تغيرت الخصائص المرسلة إليه.
متى يجب استخدام React.memo
؟
يعتبر استخدام React.memo
مناسبًا عندما يكون لديك مكونات تحتوي على خصائص لا تتغير كثيرًا، ويجب أن تتجنب إعادة رندر المكونات غير الضرورية لتحسين الأداء.
2. تحسين استخدام shouldComponentUpdate
تستخدم shouldComponentUpdate
في Class Components لتحديد ما إذا كان يجب إعادة رندرة المكون عند تغيير الـ state أو props. يسمح لك هذا بتقليل عدد عمليات الرندر عن طريق منع إعادة الرندر في حالة عدم وجود تغييرات حقيقية.
كيفية استخدام shouldComponentUpdate
:
class MyComponent extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
// مقارنة الـ props الحالية مع الـ nextProps
if (this.props.name !== nextProps.name) {
return true; // إعادة رندرة المكون إذا كانت props قد تغيرت
}
return false; // عدم إعادة رندرة المكون إذا كانت props ثابتة
}
render() {
return <div>{this.props.name}</div>;
}
}
الشرح:
shouldComponentUpdate
تُستخدم لتحسين الأداء من خلال تحديد ما إذا كان يجب إعادة رندرة المكون أم لا.- يمكن تحديد أي تغييرات في الـ props أو state تؤدي إلى إعادة رندر المكون. إذا كانت القيمة نفسها، يتم إرجاع false لمنع إعادة الرندر.
متى يجب استخدام shouldComponentUpdate
؟
يجب استخدام shouldComponentUpdate
عندما تحتاج إلى التحكم الدقيق في إعادة رندر المكونات في تطبيقك، خاصة إذا كنت تتعامل مع مكونات ثقيلة في المعالجة أو تحتوي على الكثير من البيانات.
3. Lazy Loading للمكونات باستخدام React.lazy
و Suspense
تقنية Lazy Loading هي عملية تحميل المكونات عند الحاجة فقط، بدلاً من تحميل جميع المكونات في البداية. هذا يحسن الأداء بشكل كبير، خاصة في التطبيقات الكبيرة.
كيف يعمل React.lazy
؟
React.lazy
هو دالة تسمح بتحميل المكونات بشكل ديناميكي فقط عندما يتم استخدامها في التطبيق، مما يقلل من وقت التحميل الأولي ويحسن أداء التطبيق.
كيفية استخدام React.lazy
و Suspense
:
React.lazy
: يتم استخدامه لتحميل المكونات بشكل كسول (Lazy).Suspense
: يتم استخدامه لتحديد المدة التي يجب الانتظار فيها قبل أن يتم تحميل المكونات بشكل كامل. يتم عرض مكون بديل (مثل عنصر تحميل) أثناء تحميل المكون.
مثال:
import React, { Suspense, lazy } from 'react';
// تحميل المكون باستخدام React.lazy
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
<div>
<h1>مرحبا بك في تطبيق React!</h1>
{/* استخدام Suspense لانتظار تحميل المكون */}
<Suspense fallback={<div>جاري التحميل...</div>}>
<MyComponent />
</Suspense>
</div>
);
}
export default App;
الشرح:
React.lazy
: يتم تحميلMyComponent
بشكل ديناميكي عندما يتم استدعاؤه، بدلاً من تحميله عند تحميل التطبيق.Suspense
: يتم استخدامه لتحديد المدة الزمنية التي سيتم فيها عرض المحتوى البديل (في هذه الحالة،<div>جاري التحميل...</div>
) حتى يتم تحميل المكون المطلوب.
متى يجب استخدام React.lazy
و Suspense
؟
تعتبر هذه التقنية مثالية لتحسين أداء التطبيقات الكبيرة التي تحتوي على الكثير من المكونات. يمكن استخدامها لتحميل مكونات الصفحة بشكل كسول بحيث لا يتم تحميلها إلا عندما يحتاج المستخدم إليها.
4. الملخص
تحسين الأداء في React أمر ضروري لضمان تجربة مستخدم سلسة وسريعة. بعض الطرق الشائعة لتحسين الأداء تشمل:
React.memo
: تجنب إعادة رندرة المكونات إذا كانت الخصائص لم تتغير.shouldComponentUpdate
: التحكم الدقيق في عملية إعادة الرندر في Class Components.- Lazy Loading باستخدام
React.lazy
وSuspense
: تحميل المكونات فقط عندما يحتاجها المستخدم لتقليل الوقت الذي يستغرقه تحميل التطبيق.
من خلال تطبيق هذه التقنيات، يمكنك تحسين سرعة تطبيق React الخاص بك وتقديم تجربة مستخدم أكثر سلاسة وكفاءة.
اكتشاف المزيد من كود التطور
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.