← Back to React Course | Chapter 8: Routing | Lesson 10 of 10

Query Parameters और Search State

Query parameters शॉपिंग लिस्ट पर store का नाम लिखने के बाद उसमें extra notes जोड़ने जैसे हैं, जो details देते हैं कि आप क्या ढूंढ रहे हैं बिना यह बदले कि आप किस store जा रहे हैं।
Syntax
markup
const [searchParams, setSearchParams] = useSearchParams();

const value = searchParams.get("key");
setSearchParams({ key: "newValue" });

Query Parameters पढ़ना

useSearchParams() एक URLSearchParams जैसा object return करता है जो current URL में '?' के बाद की हर चीज़ represent करता है। इस पर .get(key) call करना किसी specific parameter की value पढ़ता है, कुछ उसी तरह जैसे useParams() route segments पढ़ता है, लेकिन query string के लिए।

Note: searchParams.get(key) null return करता है अगर key URL में मौजूद न हो, empty string नहीं — इसे check करें।
Warning: Query params हमेशा strings होते हैं, बिल्कुल route params जैसे — अगर आपको number या boolean चाहिए तो उन्हें explicitly convert करें।

उदाहरण: Reading Query Parameters

markup
// Run in your local React project (npm install required)
import { useSearchParams } from 'react-router-dom';

function SearchResults() {
  const [searchParams] = useSearchParams();
  const query = searchParams.get('q') || '';
  return <p>Searching for: {query}</p>;
}

⚠️ This example uses an npm package with no CDN build available here — run this in your local React project.

Query Parameters अपडेट करना

useSearchParams() एक setter function भी return करता है, जो setSearchParams({ key: value }) जैसे उपयोग होता है, जो URL की query string update करता है और नई values के साथ एक re-render trigger करता है — कुछ useState के setter जैसी spirit में।

Note: इस तरह search params update करना URL bar को भी update करता है, जिससे current filter/search state को copied link के through share किया जा सके।
Warning: setSearchParams call करना by default पूरी query string replace कर देता है — जो params आप रखना चाहते हैं वे सभी include करें, सिर्फ वह नहीं जो आप बदल रहे हैं।

उदाहरण: Updating Query Parameters

markup
// Run in your local React project (npm install required)
import { useSearchParams } from 'react-router-dom';

function SortControl() {
  const [searchParams, setSearchParams] = useSearchParams();
  const sort = searchParams.get('sort') || 'asc';
  return (
    <button onClick={() => setSearchParams({ sort: sort === 'asc' ? 'desc' : 'asc' })}>
      Sort: {sort}
    </button>
  );
}

⚠️ This example uses an npm package with no CDN build available here — run this in your local React project.

Query Params vs. Route Params

Route params (/users/:id) एक specific resource identify करते हैं और route के structure का हिस्सा हैं — अलग IDs conceptually अलग pages मानी जाती हैं। Query params (?sort=asc) current page के लिए optional modifiers represent करते हैं, जैसे sorting या filtering, बिना यह बदले कि कौन सा resource दिखाया जा रहा है।

Note: एक अच्छा rule of thumb: अगर value हटाने से मतलब 'पूरी तरह एक अलग चीज़' होगा, तो route param उपयोग करें; अगर यह सिर्फ यह बदलता है कि वही चीज़ कैसे दिखाई जाती है, तो query param उपयोग करें।
Warning: उन चीज़ों के लिए route params ज़्यादा उपयोग करना जो असल में सिर्फ display options हैं (जैसे ?sort=) आपके route structure को बिना ज़रूरत के rigid बना देता है।

उदाहरण: Query Params vs. Route Params

markup
// Run in your local React project (npm install required)
import { useParams, useSearchParams } from 'react-router-dom';

// URL: /users/5?sort=asc
function UserPosts() {
  const { id } = useParams();           // route param: "5"
  const [searchParams] = useSearchParams(); // query param
  const sort = searchParams.get('sort');   // "asc"
  return <p>User {id}'s posts, sorted {sort}</p>;
}

⚠️ This example uses an npm package with no CDN build available here — run this in your local React project.

Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. Query params (?sort=asc) को route params (/users/:id) के साथ confuse करना — वे अलग hooks से पढ़े जाते हैं।
  2. URLSearchParams object को directly mutate करना, इसे update करने के लिए setSearchParams उपयोग करने के बजाय।
  3. यह भूल जाना कि URLSearchParams से पढ़ी हर value string होती है, route params जैसे ही।
चैप्टर सारांश
  • Query parameters एक URL के path के बाद के ?key=value pairs हैं, जैसे /search?q=react।
  • useSearchParams() एक URLSearchParams object और एक setter function return करता है, useState जैसा।
  • एक value पढ़ने के लिए searchParams.get(key) उपयोग होता है; update करने के लिए setSearchParams({...})।
  • Query params optional state के लिए ideal हैं जिसे URL के through shareable होना चाहिए, जैसे search terms या filters।
ब्राउज़र सपोर्ट

npm install react-router-dom चाहिए — इस sandbox में CDN से उपलब्ध नहीं है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.