Pelajari cara menerapkan lazy loading di React dengan code splitting komponen untuk meningkatkan performa aplikasi, pengalaman pengguna, dan waktu muat awal secara drastis.
Lazy Loading di React: Meningkatkan Performa dengan Code Splitting Komponen
Dalam lanskap pengembangan web saat ini, performa adalah yang terpenting. Pengguna mengharapkan waktu muat yang cepat dan interaksi yang lancar. Ukuran bundle JavaScript yang besar, terutama dalam aplikasi React yang kompleks, dapat secara signifikan memengaruhi waktu muat awal dan pengalaman pengguna secara keseluruhan. Salah satu teknik ampuh untuk mengatasi ini adalah lazy loading, khususnya code splitting komponen. Artikel ini memberikan panduan komprehensif untuk memahami dan menerapkan lazy loading di React menggunakan React.lazy
dan Suspense
.
Apa Itu Lazy Loading dan Code Splitting?
Lazy loading, juga dikenal sebagai pemuatan sesuai permintaan (on-demand loading), adalah teknik yang menunda pemuatan sumber daya (dalam kasus kita, komponen React) sampai benar-benar dibutuhkan. Alih-alih memuat semua kode aplikasi di awal, hanya bagian-bagian penting yang dimuat pada awalnya, dan sisa kode dimuat secara asinkron saat pengguna menavigasi ke rute tertentu atau berinteraksi dengan komponen tertentu. Hal ini secara signifikan mengurangi ukuran bundle awal dan meningkatkan time to interactive (TTI).
Code splitting adalah proses membagi kode aplikasi Anda menjadi bagian-bagian (bundle) yang lebih kecil dan lebih mudah dikelola. Bundle-bundle ini kemudian dapat dimuat secara independen dan sesuai permintaan. Lazy loading di React memanfaatkan code splitting untuk memuat komponen hanya saat dibutuhkan.
Manfaat Lazy Loading dan Code Splitting
- Waktu Muat Awal yang Lebih Baik: Dengan mengurangi ukuran bundle awal, browser mengunduh dan mem-parsing lebih sedikit JavaScript di muka, menghasilkan waktu muat halaman yang lebih cepat. Ini sangat penting bagi pengguna dengan koneksi jaringan atau perangkat yang lebih lambat.
- Pengalaman Pengguna yang Ditingkatkan: Waktu muat yang lebih cepat mengarah pada pengalaman pengguna yang lebih responsif dan menyenangkan, mengurangi rasio pentalan (bounce rates) dan meningkatkan keterlibatan pengguna.
- Pengurangan Konsumsi Sumber Daya: Memuat hanya kode yang diperlukan mengurangi jejak memori aplikasi, yang sangat bermanfaat untuk perangkat seluler.
- SEO yang Lebih Baik: Mesin pencari menyukai situs web dengan waktu muat yang cepat, yang berpotensi meningkatkan peringkat mesin pencari situs web Anda.
Menerapkan Lazy Loading di React dengan React.lazy
dan Suspense
React menyediakan mekanisme bawaan untuk memuat komponen secara lazy menggunakan React.lazy
dan Suspense
. React.lazy
memungkinkan Anda untuk mengimpor komponen secara dinamis, sementara Suspense
menyediakan cara untuk menampilkan UI pengganti (fallback) saat komponen sedang dimuat.
Langkah 1: Impor Dinamis dengan React.lazy
React.lazy
menerima sebuah fungsi yang memanggil import()
. Fungsi import()
adalah impor dinamis yang mengembalikan sebuah Promise, yang akan resolve ke sebuah modul yang berisi komponen yang ingin Anda muat secara lazy.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
Dalam contoh ini, MyComponent
tidak dimuat sampai ia di-render. Pernyataan import('./MyComponent')
secara dinamis mengimpor komponen dari file ./MyComponent
. Perhatikan bahwa path tersebut relatif terhadap file saat ini.
Langkah 2: Menggunakan Suspense
untuk Menangani Status Pemuatan
Karena lazy loading melibatkan pemuatan komponen secara asinkron, Anda memerlukan cara untuk menangani status pemuatan dan menampilkan UI pengganti saat komponen sedang diambil. Di sinilah Suspense
berperan. Suspense
adalah komponen React yang memungkinkan Anda untuk "menangguhkan" rendering turunannya (children) sampai mereka siap. Ia menerima prop fallback
, yang menentukan UI yang akan di-render saat turunannya sedang dimuat.
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading...
Dalam contoh ini, komponen Suspense
membungkus MyComponent
. Saat MyComponent
sedang dimuat, prop fallback
(
) akan di-render. Setelah MyComponent
dimuat, ia akan menggantikan UI pengganti.
Contoh: Lazy Loading Rute dalam Aplikasi React Router
Lazy loading sangat berguna untuk rute dalam aplikasi React Router. Anda dapat memuat seluruh halaman atau bagian dari aplikasi Anda secara lazy, meningkatkan waktu muat awal situs web Anda.
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./pages/Home'));
const About = lazy(() => import('./pages/About'));
const Contact = lazy(() => import('./pages/Contact'));
function App() {
return (
Loading...