تعزز أداء تطبيق React أمر بالغ الأهمية لتجربة المستخدم الإيجابية. تحدد هذه المقالة سبعة أنماط أداء مثبتة تم الحصول عليها من تحسين العديد من تطبيقات رد فعل الإنتاج.
usememo
و Usecallback
: المشكلة: غير ضرورية من أعمدة غير ضرورية بسبب الدعائم غير المتغيرة أو الحالة.
الحل: ذاكرة التخزين المؤقت العمليات باهظة الثمن ومراجع الوظائف.
const ExpensiveComponent = ({ items }) => {
const sortedList = useMemo(() => items.sort((a, b) => a.price - b.price), [items]);
const handleClick = useCallback(() => {
console.log('Item clicked:', sortedList[0]);
}, [sortedList]);
return ;
};
أفضل الممارسات: استخدم مع React.memo
للحصول على مكونات الطفل لمنع تحديثات الشجرة الفرعية غير الضرورية. مثالية للحسابات المعقدة (الفرز ، التصفية) ، تم تمرير عمليات الاسترجاعات إلى الأطفال المحسنين ، وقيم موفر سياق مستقر.
المشكلة: حجم حزمة أولي كبير يؤثر على الطلاء الأول للمحتوى (FCP).
الحل: استيرادات ديناميكية و التشويق
للتحميل عند الرسم.
const HeavyChartLibrary = React.lazy(() => import('./ChartComponent'));
const Dashboard = () => (
}>
{showCharts && }
);
متقدم: الاندماج مع جهاز توجيه React لتقسيم الكود المستند إلى الطريق.
المشكلة: جعل آلاف العناصر يطغى على DOM.
الحل: React-window
import { FixedSizeList } from 'react-window';
const BigList = ({ items }) => (
{({ index, style }) => (
...
)}
);
المكافأة: استخدم المتغيرات للحصول على ارتفاعات الصف الديناميكي و
الحل:
الاستفادة من ردود الفعل التلقائي 18.رد فعل 18:
setCount (1) ؛ setText ('تحديث') ؛ // re-Render Single
setCount(1);
setText('Updated'); // Single re-render
استخدم usereducer لتحديثات الحالة الذرية.
الحل:
A Custom المستخدمة hook.
استيراد {UseEffect ، Usestate} من 'React' ؛
const usebouncedValue = (القيمة ، التأخير) => {
const [debouncedValue ، setDebouncedValue] = Usestate (value) ؛
useEffect (() => {
const handler = setTimeOut (() => setDebouncedValue (القيمة) ، التأخير) ؛
return () => clearTimeOut (معالج) ؛
} ، [القيمة ، التأخير]) ؛
إرجاع debouncedvalue ؛
} ؛
import { useEffect, useState } from 'react';
const useDebouncedValue = (value, delay) => {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => setDebouncedValue(value), delay);
return () => clearTimeout(handler);
}, [value, delay]);
return debouncedValue;
};
الجمع مع AbortController لإلغاء الطلبات المعلقة.
الحل:
تقسيم السياقات وقيم مزود المذكرات.
الحل:
توفير ملاحظات مرئية فورية وتراجع عن الخطأ.قائمة مراجعة الأداء:
ملف التعريف إعادة تدوير مع REACT DEVTOOLS PROFILER.
،
usecallback استراتيجية.
تنفيذ التحميل الإضافي.
تحسين الصور/الوسائط مع التحميل كسول. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3