React Academy · Pelajaran

Mengelola Status dalam Parameter Pencarian URL

Sinkronkan filter, pengurutan, dan penomoran halaman ke URL dengan useSearchParams.

Pelajaran 4 dari 413 langkah

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.

Gratis untuk memulai

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

  1. Rute Bertingkat & Tata Letak Outlet
  2. Loader & Actions (API Router Data)
  3. Rute Terlindungi & Penjaga Autentikasi
  4. Mengelola Status dalam Parameter Pencarian URL
← Kembali ke React Academy