React

تحسين أداء تطبيقات React: نصائح وحيل

15 يونيو 2023
9 دقائق
تحسين أداء تطبيقات React: نصائح وحيل
يعقوب الحيدري

يعقوب الحيدري

مطور واجهة أمامية

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

1. استخدام `React.memo` لتجنب إعادة التصيير غير الضرورية

`React.memo` هي أداة مفيدة تمنع إعادة التصيير غير الضرورية للمكونات عندما لا تتغير الـ props الخاصة بها.

# قبل التحسين:

tsx
function UserProfile({ name, age }) {
  console.log('إعادة التصيير!');
  return <p>{name} - {age} سنة</p>;
}

# بعد التحسين باستخدام `React.memo`:

tsx
const UserProfile = React.memo(function UserProfile({ name, age }) {
  console.log('إعادة التصيير!');
  return <p>{name} - {age} سنة</p>;
});

2. تحسين أداء الوظائف باستخدام `useCallback`

`useCallback` يمنع إنشاء دوال جديدة عند كل إعادة تصيير، مما يساعد في تحسين الأداء عند تمرير الوظائف إلى المكونات الفرعية.

tsx
const handleClick = useCallback(() => {
  console.log('تم النقر!');
}, []);

3. استخدام `useMemo` لتجنب الحسابات غير الضرورية

عند تنفيذ عمليات حسابية مكلفة، يمكنك استخدام `useMemo` لتخزين القيم وإعادة استخدامها بدلاً من إعادة حسابها عند كل إعادة تصيير.

tsx
const sortedUsers = useMemo(() => users.sort((a, b) => a.name.localeCompare(b.name)), [users]);

4. تقسيم الكود باستخدام `React.lazy`

يمكنك تحميل المكونات عند الحاجة فقط باستخدام `React.lazy` و `Suspense`، مما يقلل حجم حزمة التطبيق ويحسن وقت التحميل الأولي.

tsx
const LazyComponent = React.lazy(() => import('./LazyComponent'));

function App() {
  return (
    <Suspense fallback={<div>جاري التحميل...</div>}>
      <LazyComponent />
    </Suspense>
  );
}

5. تحسين الأداء باستخدام `virtualization`

في حالة عرض قوائم ضخمة، يمكن استخدام مكتبات مثل `react-window` لتجنب تحميل جميع العناصر دفعة واحدة.

tsx
import { FixedSizeList as List } from 'react-window';

function Item({ index, style }) {
  return <div style={style}>Item {index}</div>;
}

function VirtualizedList() {
  return (
    <List height={400} itemCount={1000} itemSize={35} width={300}>
      {Item}
    </List>
  );
}

6. تجنب تحديث الحالة غير الضرورية

لا تقم بتحديث الحالة إلا عند الحاجة لتجنب إعادة التصيير غير الضرورية.

tsx
const [count, setCount] = useState(0);

const increment = () => {
  setCount(prev => prev + 1);
};

7. تقليل استخدام `useEffect`

استخدم `useEffect` فقط عند الحاجة لتجنب تنفيذ الكود غير الضروري.

tsx
useEffect(() => {
  console.log('تم تحديث العنوان!');
  document.title = `Count: ${count}`;
}, [count]);

الخاتمة

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

React
JavaScript
Performance
Web Development

مقالات ذات صلة

كيفية بناء واجهة مستخدم جذابة باستخدام React
React

كيفية بناء واجهة مستخدم جذابة باستخدام React

في هذا المقال، سنتعرف على كيفية بناء واجهة مستخدم جذابة وسهلة الاستخدام باستخدام مكتبة React وبعض المكتبات المساعدة مثل Tailwind CSS.

10 يناير 2023
5 دقائق
مقدمة في Next.js: إطار العمل المثالي لتطبيقات React
Next.js

مقدمة في Next.js: إطار العمل المثالي لتطبيقات React

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

15 فبراير 2023
7 دقائق
استخدام TypeScript مع React: دليل شامل
TypeScript

استخدام TypeScript مع React: دليل شامل

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

5 مارس 2023
10 دقائق

اشترك في النشرة الإخبارية

احصل على أحدث المقالات والتحديثات مباشرة في بريدك الإلكتروني

لن نرسل لك أي رسائل غير مرغوب فيها. يمكنك إلغاء الاشتراك في أي وقت.