Mengelola Status dalam Parameter Pencarian URL
Sinkronkan filter, pengurutan, dan penomoran halaman ke URL dengan useSearchParams.
Mengelola Status dalam Parameter Pencarian URL 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.
Mengapa Status Disimpan di URL?
Filter, kueri pencarian, urutan pengurutan, dan paginasi sebaiknya disimpan di URL agar pengguna dapat menandai, membagikan, dan kembali ke tampilan yang sama tanpa kehilangan status.
Hook useSearchParams
useSearchParams() mengembalikan instans URLSearchParams saat ini dan fungsi penetap, mirip dengan useState tetapi didukung oleh string kueri URL.
import { useSearchParams } from 'react-router-dom';
function ProductList() {
const [searchParams, setSearchParams] = useSearchParams();
const query = searchParams.get('q') || '';
const page = Number(searchParams.get('page') || 1);
// ...
}Membaca Satu Parameter
Gunakan searchParams.get('key') untuk membaca suatu nilai. Fungsi ini mengembalikan null jika parameternya tidak ada, jadi sediakan nilai cadangan.
const sort = searchParams.get('sort') ?? 'name';
const order = searchParams.get('order') ?? 'asc';Menulis Parameter Tanpa Navigasi
Panggil setSearchParams() dengan objek baru atau fungsi pembaru untuk mengubah parameter. React Router memperbarui URL dan merender ulang tanpa navigasi penuh.
function SortButton({ field }) {
const [searchParams, setSearchParams] = useSearchParams();
const handleClick = () => {
setSearchParams(prev => {
prev.set('sort', field);
prev.set('page', '1');
return prev;
});
};
return <button onClick={handleClick}>Sort by {field}</button>;
}Mempertahankan Parameter Lain Saat Memperbarui
Gunakan bentuk fungsi pembaru dari setSearchParams agar Anda hanya mengubah parameter yang memang ingin diubah, sementara parameter lainnya tetap utuh.
setSearchParams(prev => {
prev.set('q', newQuery);
// 'sort' and 'page' are unchanged
return prev;
});Menyinkronkan Input dengan Parameter Pencarian
Kontrol nilai input dari parameter URL dan perbarui URL saat terjadi perubahan agar keduanya tetap sinkron.
function SearchBar() {
const [params, setParams] = useSearchParams();
const q = params.get('q') || '';
return (
<input
value={q}
onChange={e => setParams(prev => {
prev.set('q', e.target.value);
prev.set('page', '1');
return prev;
})}
/>
);
}Bendera Boolean dalam Parameter Pencarian
Gunakan ada atau tidaknya suatu parameter (atau string '1'/'0') untuk mewakili status UI boolean, seperti panel yang terbuka atau filter yang aktif.
const showFilters = searchParams.has('filters');
const toggleFilters = () => {
setSearchParams(prev => {
if (prev.has('filters')) prev.delete('filters');
else prev.set('filters', '1');
return prev;
});
};Nilai Array dalam Parameter Pencarian
URLSearchParams mendukung beberapa nilai untuk kunci yang sama. Gunakan getAll('key') untuk membacanya sebagai array.
// URL: /products?tag=react&tag=typescript
const tags = searchParams.getAll('tag'); // ['react', 'typescript']
// Setting multiple values:
const newParams = new URLSearchParams();
selectedTags.forEach(t => newParams.append('tag', t));
setSearchParams(newParams);Mengganti vs Menambahkan ke Riwayat
Teruskan { replace: true } sebagai argumen kedua ke setSearchParams agar perubahan filter tidak membanjiri tumpukan riwayat browser.
setSearchParams(prev => { prev.set('q', val); return prev; }, { replace: true });Menurunkan Status dari Parameter
Hitung nilai turunan (seperti bilangan bulat yang diuraikan atau enumerasi yang divalidasi) dari parameter string mentah di bagian atas komponen agar dapat digunakan dengan aman di seluruh komponen.
const rawPage = searchParams.get('page');
const page = Math.max(1, parseInt(rawPage || '1', 10));
const rawSort = searchParams.get('sort');
const sort = ['name', 'price', 'date'].includes(rawSort) ? rawSort : 'name';Membuat Tautan dengan Parameter Pencarian
Gunakan properti search pada objek Link atau to untuk menavigasi ke URL dengan parameter kueri tertentu.
<Link to={{ pathname: '/products', search: '?sort=price&order=asc' }}>
Sort by Price
</Link>Pemeriksaan Cepat
Metode URLSearchParams mana yang membaca semua nilai untuk kunci berulang seperti ?tag=react&tag=ts?
Ringkasan
useSearchParams() menyinkronkan status komponen dengan string kueri URL. Gunakan bentuk pembaru untuk mempertahankan parameter lain, { replace: true } untuk mencegah riwayat membengkak, dan getAll() untuk parameter yang nilainya berupa array.
Belajar React dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengelola Status dalam Parameter Pencarian URL” gratis?
Ya — teks lengkap “Mengelola Status dalam Parameter Pencarian URL” 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 “Mengelola Status dalam Parameter Pencarian URL”?
Sinkronkan filter, pengurutan, dan penomoran halaman ke URL dengan useSearchParams. 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 “Mengelola Status dalam Parameter Pencarian URL” 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
- Rute Bertingkat & Tata Letak Outlet
- Loader & Actions (API Router Data)
- Rute Terlindungi & Penjaga Autentikasi
- Mengelola Status dalam Parameter Pencarian URL