Saya telah menulis kod React selama lebih daripada 3 tahun sekarang. Walau bagaimanapun, satu perkara yang saya tidak fokus pada mulanya ialah mengoptimumkan prestasi React. Selalunya hutang teknikal terkumpul dan menjadi mencabar untuk mengoptimumkan prestasi.
Agak sukar untuk menumpukan pada pengoptimuman dari awal tetapi anda boleh menjadualkan pengoptimuman dari semasa ke semasa untuk mengelakkan hutang teknikal yang besar.
Kami akan melihat beberapa teknik pengoptimuman untuk React. Ini boleh dilaksanakan semasa anda menulis kod. Ia adalah soal memilih kaedah ini berbanding kaedah lain.
Jadi, mari kita mulakan.
Senarai pemaparan adalah perkara biasa kerana terdapat komponen dalam React. Memaparkan senarai besar adalah mencabar kerana ia boleh menyebabkan pemaparan yang perlahan dan penggunaan memori. Maya adalah cara terbaik untuk menangani masalah sedemikian. Ia hanya memaparkan senarai yang boleh dilihat sahaja dan item lain akan dipaparkan apabila diperlukan.
React Window dan React Virtualized ialah perpustakaan popular untuk senarai virtualisasi. Mereka memaparkan hanya item yang boleh dilihat dalam port pandangan, dengan ketara mengurangkan bilangan nod DOM yang diberikan pada bila-bila masa.
Berikut ialah contoh dengan React Window:
import { FixedSizeList as List } from 'react-window'; const MyList = ({ items }) => ({({ index, style }) => (
);{items[index]})}
useMemo ialah cangkuk React yang menghafal hasil pengiraan. Oleh itu, ia tidak membenarkan pemprosesan berbilang pengiraan melainkan terdapat perubahan dalam kebergantungan. Ini boleh berguna untuk mengoptimumkan prestasi dalam senario di mana fungsi atau pengiraan adalah mahal dan tidak boleh dilaksanakan semula pada setiap pemaparan.
Sintaks useMemo ialah:
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
Seperti yang anda lihat, useMemo mengambil dua hujah:
Berikut ialah contoh useMemo:
import React, { useState, useMemo } from 'react'; const ExpensiveComponent = ({ a, b }) => { const computeExpensiveValue = (a, b) => { console.log('Computing expensive value...'); return a + b; }; const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); return (); }; const ParentComponent = () => { const [a, setA] = useState(1); const [b, setB] = useState(2); const [count, setCount] = useState(0); return (Computed Value: {memoizedValue}
); };
Dalam persediaan tradisional, semua komponen aplikasi anda digabungkan ke dalam satu fail. Pemisahan Kod ialah teknik pengoptimuman untuk memecahkan aplikasi anda kepada bahagian yang lebih kecil. Ia mengurangkan masa memuatkan aplikasi apabila anda memuatkan komponen yang lebih kecil dan mengelakkan komponen lain yang tidak diperlukan.
Berikut ialah contoh Pemisahan Kod:
import React, { useState } from 'react'; function App() { const [component, setComponent] = useState(null); const loadComponent = async () => { const { default: LoadedComponent } = await import('./MyComponent'); setComponent(); }; return ( ); } export default App;Code Splitting Example
{component}
React.Lazy ialah kaedah penting untuk mengoptimumkan pemuatan komponen. Ia membolehkan anda malas memuatkan komponen. Ini bermakna komponen itu hanya dimuatkan jika diperlukan. Menggunakan ini, anda boleh membahagikan aplikasi anda kepada komponen yang lebih kecil dan dimuatkan atas permintaan.
React.lazy() digunakan untuk mengimport komponen secara dinamik. Apabila komponen diperlukan, ia dimuatkan secara tidak segerak dan sehingga itu, UI sandaran (seperti pemutar pemuatan) boleh dipaparkan.
Berikut ialah contoh Lazy Load:
import React, { Suspense } from 'react'; const LazyComponent = React.lazy(() => import('./MyComponent')); const App = () => { return (}>My App
Loading...
Ia bukan sahaja khusus untuk React tetapi juga pengaturcaraan umum apabila memanggil fungsi. Pendikitan ialah teknik yang mentakrifkan kekerapan sesuatu fungsi dilaksanakan. Apabila fungsi dikurangkan, ia hanya dibenarkan untuk dilaksanakan sekali dalam selang masa yang ditentukan, tidak kira berapa kali peristiwa itu dicetuskan. Contohnya, menambahkan pendikit pada klik butang supaya butang itu tidak boleh digunakan terlalu kerap.
Contoh Pendikit:
import React, { useState } from 'react'; function ThrottledButton() { const [count, setCount] = useState(0); const throttle = (func, delay) => { let lastCall = 0; return () => { const now = new Date().getTime(); if (now - lastCall >= delay) { lastCall = now; func(); } }; }; const incrementCount = () => { setCount((prevCount) => prevCount + 1); }; const throttledIncrement = throttle(incrementCount, 2000); return (); } export default ThrottledButton;Count: {count}
Menyahlantun digunakan untuk memastikan fungsi harus dilaksanakan selepas tempoh masa tertentu selepas menggunakan fungsi tersebut. Apabila peristiwa berlaku berulang kali, fungsi nyahlantun hanya akan dilaksanakan selepas acara berhenti menembak untuk tempoh kelewatan yang ditentukan. Contohnya, apabila pengguna menaip dalam input carian dan untuk memberikan cadangan, kami menunggu beberapa milisaat sebelum menggunakan fungsi tersebut supaya pengguna melengkapkan penaipan.
Contoh Menyahlantun:
import React, { useState } from 'react'; function debounce(func, delay) { let timeoutId; return function (...args) { if (timeoutId) { clearTimeout(timeoutId); } timeoutId = setTimeout(() => { func(...args); }, delay); }; } const DebouncedSearch = () => { const [query, setQuery] = useState(''); const handleSearch = (event) => { setQuery(event.target.value); console.log('Searching for:', event.target.value); // Here you would typically trigger an API call or filter a list based on the query }; const debouncedSearch = debounce(handleSearch, 500); return (); }; export default DebouncedSearch;Search
Search Query: {query}
Mari berhubung dan kekal termaklum mengenai semua perkara teknologi, inovasi dan seterusnya! ?
Mengoptimumkan aplikasi React adalah penting untuk memastikan ia berjalan dengan lancar dan cekap, terutamanya apabila ia berkembang dalam kerumitan dan saiz. Dengan menggabungkan teknik seperti virtualisasi senarai, penghafalan dengan useMemo, pemisahan kod, pemuatan malas, pendikitan dan nyahlantun, anda boleh meningkatkan prestasi aplikasi React anda dengan ketara.
Saya harap kaedah ini akan memberi manfaat dalam mengoptimumkan prestasi aplikasi React anda. Terima kasih kerana membaca artikel.
Atas ialah kandungan terperinci Mengoptimumkan Aplikasi React untuk Prestasi Maksimum. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!