Penerapan Praktis: Pencarian, Gulir, Pengubahan Ukuran
Terapkan debounce pada input pencarian serta throttle pada pendengar gulir dan pengubahan ukuran dalam contoh komponen nyata.
Penerapan Praktis: Pencarian, Gulir, Pengubahan Ukuran adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.
Pencarian Langsung dengan useDebounce
Dalam komponen pencarian langsung, pertahankan dua variabel status terpisah: inputValue untuk input mentah (diperbarui pada setiap penekanan tombol, sehingga kolom input tetap responsif) dan debouncedQuery dari useDebounce(inputValue, 300) (diperbarui 300 ms setelah pengetikan berhenti, sehingga memicu panggilan API). Pemisahan ini memberikan umpan balik visual seketika tanpa permintaan berlebihan.
Status Pemuatan Saat Pencarian
Tampilkan indikator pemuatan segera setelah pengguna mulai mengetik, bukan hanya saat panggilan API dimulai. Tetapkan isLoading: true kapan pun inputValue !== debouncedQuery — keduanya tidak sinkron selama penundaan masih menunggu. Setelah kueri stabil dan pengambilan selesai, atur kembali ke false. Pengguna melihat indikator pemuatan yang responsif sepanjang proses.
Penanganan Gulir dengan useThrottle
Efek paralaks atau bilah kemajuan membaca diperbarui berdasarkan posisi gulir. Batasi penangan gulir hingga maksimum 60 fps menggunakan jeda 16 ms: const throttledScrollY = useThrottle(scrollY, 16). Antarmuka diperbarui dengan mulus tanpa biaya komputasi ulang posisi pada setiap piksel guliran.
Pengubahan Ukuran Jendela dengan useDebounce
Mendengarkan pengubahan ukuran jendela untuk menghitung ulang tata letak sebaiknya menggunakan penundaan, bukan pembatasan laju. Perhitungan tata letak hanya perlu dijalankan sekali setelah pengguna selesai mengubah ukuran. Gunakan penundaan 200 ms pada dimensi jendela. Selama pengguna menyeret untuk mengubah ukuran, antarmuka dapat menampilkan status sederhana; tata letak yang dihitung ulang muncul saat pengubahan ukuran berhenti.
Menggabungkan Penundaan dengan AbortController
Saat debouncedQuery berubah, buat AbortController baru dan teruskan signal-nya ke fetch(url, { signal }). Kembalikan fungsi pembersihan yang memanggil controller.abort(). Ini membatalkan permintaan yang sedang berlangsung dari kueri sebelumnya ketika kueri tertunda baru tiba, sehingga mencegah kondisi balapan saat respons lama yang lambat menimpa respons baru yang lebih cepat.
Kondisi Balapan Tanpa Pembatalan
Tanpa AbortController, jika pengguna mengetik "re", menunggu, lalu mengetik "react", kueri kedua mungkin selesai sebelum kueri pertama (karena penyimpanan tembolok). Hasil pencarian akan menampilkan hasil React sebentar, lalu ditimpa oleh hasil usang untuk "re". AbortController mencegah hal ini dengan membatalkan permintaan sebelumnya sepenuhnya.
Pola Menu Tarik-Turun Pelengkapan Otomatis
Menu tarik-turun menggabungkan penundaan untuk panggilan API dan status langsung untuk tampilan input. inputValue mengontrol apa yang muncul di kolom teks. useDebounce(inputValue, 250) mengontrol kapan pengambilan saran dijalankan. Daftar saran ditampilkan dari status hasil yang diambil, yang terpisah dari kedua status input.
Validasi Asinkron Berbatas Laju
Validasi formulir asinkron, seperti memeriksa apakah email sudah ada, sebaiknya ditunda agar server tidak dibebani pada setiap penekanan tombol. Gunakan penundaan 400 ms pada nilai bidang dan jalankan permintaan validasi dalam useEffect yang bergantung pada nilai tertunda. Tampilkan indikator pemuatan di bidang selama validasi berlangsung.
Penyimpanan Otomatis Formulir dengan Penundaan
Penundaan sangat cocok untuk menyimpan konten formulir secara otomatis saat pengguna mengetik. Tetapkan penundaan 1000 ms pada objek nilai formulir. Saat nilai tertunda berubah, picu penyimpanan ke localStorage atau titik akhir API. Pengguna melihat indikator "Menyimpan..." selama penundaan masih berlangsung dan "Tersimpan" setelah permintaan selesai.
Memilih Jeda yang Tepat
Nilai jeda merupakan keputusan pengalaman pengguna. Untuk pencarian: 200–300 ms menyeimbangkan responsivitas dengan pengurangan jumlah permintaan. Untuk pengubahan ukuran: 150–200 ms dapat diterima karena pengguna mengharapkan tata letak stabil setelah pengubahan ukuran. Untuk penyimpanan otomatis: 1000 ms memberi pengguna waktu untuk mengetik satu kalimat sebelum menyimpan. Sesuaikan berdasarkan kecepatan interaksi yang diharapkan.
Menggabungkan Beberapa Teknik
Aplikasi nyata sering memerlukan beberapa pengoptimalan secara bersamaan. Editor dokumen dapat menunda penyimpanan otomatis (1 dtk), membatasi laju penghitungan jumlah kata (500 ms), dan menggunakan IntersectionObserver untuk analitik. Teknik-teknik ini berpadu dengan baik karena masing-masing bekerja secara mandiri menggunakan pengatur waktu dan cakupannya sendiri.
Menggabungkan Penundaan dengan AbortController
Mengapa Anda sebaiknya menggunakan AbortController bersama kueri pencarian yang ditunda?
Ringkasan Pelajaran: Penundaan dan Pembatasan Laju Praktis
Gunakan useDebounce untuk input pencarian, penangan pengubahan ukuran, dan penyimpanan otomatis formulir. Gunakan useThrottle untuk guliran dan gerakan tetikus. Selalu gabungkan panggilan API yang ditunda dengan AbortController untuk mencegah kondisi balapan. Tampilkan status pemuatan kapan pun inputValue !== debouncedQuery agar antarmuka pengguna tetap responsif dan informatif.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penerapan Praktis: Pencarian, Gulir, Pengubahan Ukuran” gratis?
Ya — teks lengkap “Penerapan Praktis: Pencarian, Gulir, Pengubahan Ukuran” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penerapan Praktis: Pencarian, Gulir, Pengubahan Ukuran”?
Terapkan debounce pada input pencarian serta throttle pada pendengar gulir dan pengubahan ukuran dalam contoh komponen nyata. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai React Academy?
Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Penerapan Praktis: Pencarian, Gulir, Pengubahan Ukuran” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa Debounce dan Throttle Penting dalam UI
- Mengimplementasikan Hook Kustom useDebounce
- Mengimplementasikan Hook Kustom useThrottle
- Penerapan Praktis: Pencarian, Gulir, Pengubahan Ukuran