Mengoptimumkan Aplikasi React untuk Prestasi Maksimum

WBOY
Lepaskan: 2024-08-19 20:31:39
asal
879 orang telah melayarinya

Optimizing React Applications for Maximum Performance

pengenalan

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.

1. Mengoptimumkan Senarai Besar

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]}
)}
);
Salin selepas log masuk

2. gunakanMemo

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]);
Salin selepas log masuk

Seperti yang anda lihat, useMemo mengambil dua hujah:

  • Fungsi yang mengembalikan nilai supaya boleh dihafal.
  • Susun atur kebergantungan yang menentukan bila nilai yang dihafal harus menjadi komputer semula.

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 (
         

Computed Value: {memoizedValue}

); }; const ParentComponent = () => { const [a, setA] = useState(1); const [b, setB] = useState(2); const [count, setCount] = useState(0); return (
); };
Salin selepas log masuk

3. Pemisahan Kod

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 ( 

Code Splitting Example

{component}
); } export default App;
Salin selepas log masuk

4. React Lazy Load

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...
}>
); }; export default App;
Salin selepas log masuk

Pendikit dan Nyahlantun

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 ( 

Count: {count}

); } export default ThrottledButton;
Salin selepas log masuk

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 ( 

Search

Search Query: {query}

); }; export default DebouncedSearch;
Salin selepas log masuk

Berhubung Dengan Saya

Mari berhubung dan kekal termaklum mengenai semua perkara teknologi, inovasi dan seterusnya! ?

  • Twitter
  • LinkedIn

Kesimpulan

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!