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

URL Parameters का उपयोग

URL parameters एक address में fill-in-the-blank spots जैसे हैं, एक route को अलग content दिखाने देते हुए इस आधार पर कि क्या plug किया गया है, जैसे /users/5 vs /users/9।
Syntax
markup
<Route path="/items/:id" element={<ItemDetail />} />

function ItemDetail() {
  const { id } = useParams();
  return <p>{id}</p>;
}

एक Dynamic Route Segment Define करना

एक path segment को colon से prefix करना, जैसे path='/users/:id', React Router को बताता है कि वह segment एक variable है, कोई literal string नहीं। उस shape से match करने वाला कोई भी URL, जैसे /users/5 या /users/42, इस single route definition से match होगा।

Note: आप एक path में multiple dynamic segments रख सकते हैं, जैसे '/posts/:postId/comments/:commentId'।
Warning: Colon syntax सिर्फ Route को pass किए path string में काम करता है — आप इसे कहीं और नहीं जोड़ सकते।

उदाहरण: Defining a Dynamic Route Segment

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

function UserDetail() { return <p>Showing a user</p>; }

function AppRoutes() {
  return (
    <Routes>
      <Route path="/users/:id" element={<UserDetail />} />
    </Routes>
  );
}

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

useParams से Parameter पढ़ना

एक dynamic route द्वारा render किए component के अंदर, useParams() call करना एक object return करता है जिसकी keys path में colon-prefixed names से match करती हैं। path='/users/:id' के लिए, useParams() { id: 5 } जैसा कुछ return करता है जब URL /users/5 हो।

Note: clarity के लिए exactly उन params को destructure करें जिनकी आपको ज़रूरत है, जैसे const { id } = useParams()।
Warning: useParams() हमेशा strings return करता है, numeric-looking IDs के लिए भी — अगर आपको इसे numerically compare करना हो तो Number(id) या parseInt उपयोग करें।

उदाहरण: Reading the Parameter with useParams

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

function UserDetail() {
  const { id } = useParams();
  return <p>Showing user with ID: {id}</p>;
}

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

सही Data Fetch करने के लिए Params उपयोग करना

एक route param का सबसे common उपयोग उस ID का उपयोग करके एक list या API से matching item ढूंढना है। चूंकि useParams() आपको current ID directly देता है, आप इसे useEffect के अंदर उपयोग कर सकते हैं जब भी यह बदले corresponding data fetch या find करने के लिए।

Note: Param को useEffect के dependency array में include करें, ताकि /users/1 से /users/2 navigate करना नए user का data re-fetch करे।
Warning: Dependency array में param भूल जाने का मतलब है component अपना data update नहीं करेगा जब सिर्फ URL में ID बदले।

उदाहरण: Using Params to Fetch the Right Data

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

function UserDetail() {
  const { id } = useParams();
  const [name, setName] = useState("");
  useEffect(() => { setName("User #" + id); }, [id]);
  return <p>{name}</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. Route definition में colon भूल जाना (path='/users/:id' न कि '/users/id')।
  2. Param string को numeric IDs के against compare करते समय number में convert न करना, चूंकि useParams हमेशा strings return करता है।
  3. यह मान लेना कि एक param हमेशा present है — एक route navigation पूरी तरह resolve होने से पहले render हो सकता है।
चैप्टर सारांश
  • एक route path segment जो colon से prefixed हो (जैसे :id) एक dynamic parameter बन जाता है।
  • useParams() सभी matched parameters का एक object strings के रूप में return करता है, इनके names से keyed।
  • Params एक Route definition को कई अलग URLs serve करने देते हैं (जैसे हर /users/:id)।
  • Param strings को हमेशा parse/convert करें अगर आपको इन्हें numbers के against compare करना हो।
ब्राउज़र सपोर्ट

npm install react-router-dom चाहिए — इस sandbox में CDN से available नहीं।

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.