📂 React Router
URL Parameters in React Router

āĻ…āϏāĻžāϧāĻžāϰāĻŖ! āĻāĻ–āύ āφāĻŽāϰāĻž react-router-dom āĻāϰ URL Values āĻŦāĻŋāώ⧟āϟāĻŋ āύāĻŋā§Ÿā§‡ āĻāĻ•āϟāĻž āĻŦā§āϞāĻ— āĻĒā§‹āĻ¸ā§āϟ āϞāĻŋāĻ–āĻŦ— āϏ⧇āĻ•āĻļāύ āĻŦāĻžāχ āϏ⧇āĻ•āĻļāύ, āĻāĻ•āĻĻāĻŽ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ⧇āϰ āĻŽāϤ⧋ āϗ⧁āĻ›āĻŋā§Ÿā§‡, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāĻšāϜ, āĻĒā§āϰāĻžāĻžā§āϜāϞ āĻāĻŦāĻ‚ āĻŦāĻžāĻ‚āϞāĻž āĻ­āĻžāώāĻžā§Ÿ, āϝ⧇āύ React āĻļ⧇āĻ–āĻž āĻšā§Ÿā§‡ āĻ“āϠ⧇ āĻŦāĻ¨ā§āϧ⧁āϰ āĻŽāϤ⧋ āϏāĻšāϜāĨ¤


📌 URL Values – React Router āĻ āχāωāφāϰāĻāϞ āĻĨ⧇āϕ⧇ āϤāĻĨā§āϝ āĻĒ⧜āĻžāϰ āϏāĻšāϜ āωāĻĒāĻžā§Ÿ

React Router āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ āφāĻŽāϰāĻž āĻ…āύ⧇āĻ• āϏāĻŽā§Ÿ URL āĻĨ⧇āϕ⧇ āĻĄā§‡āϟāĻž āĻĒā§œā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āĻ…ā§āϝāĻžāĻĒāϕ⧇ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āĻ•āϰāϤ⧇ āϚāĻžāχāĨ¤ āĻāχ āĻĄā§‡āϟāĻžāϗ⧁āϞ⧋āϕ⧇ āĻŦāϞ⧇ URL ValuesāĨ¤ āĻāχ āϟāĻĒāĻŋāϕ⧇ āφāĻŽāϰāĻž āϤāĻŋāύāϟāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϜāĻŋāύāĻŋāϏ āĻļāĻŋāĻ–āĻŦ:

  1. Route Params
  2. URL Search Params
  3. Location Object

āϚāϞ⧁āύ, āϧāĻžāĻĒ⧇ āϧāĻžāĻĒ⧇ āĻļāĻŋāĻ–āĻŋāĨ¤


ā§§. đŸ›Ŗī¸ Route Params — URL-āĻāϰ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āĻ…āĻ‚āĻļ āĻĨ⧇āϕ⧇ āĻŽāĻžāύ (value) āĻĒāĻžāĻ“ā§ŸāĻž

āφāĻŽāϰāĻž āϝāĻĻāĻŋ āϚāĻžāχ URL-āĻ āĻ•āĻŋāϛ⧁ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āĻ…āĻ‚āĻļ āĻĨāĻžāϕ⧇, āϝ⧇āĻŽāύ /concerts/dhaka āĻŦāĻž /concerts/chittagong, āϤāĻžāĻšāϞ⧇ āϏ⧇āϟāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāϰāĻž :paramName āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:

<Route path="/concerts/:city" element={<City />} />

āĻāĻ–āĻžāύ⧇ :city āĻšāϞ⧋ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āĻ…āĻ‚āĻļāĨ¤ āχāωāϜāĻžāϰ āϝāĻĻāĻŋ /concerts/dhaka URL-āĻ āϝāĻžā§Ÿ, āϤāĻžāĻšāϞ⧇ city āĻāϰ āĻŽāĻžāύ āĻšāĻŦ⧇ dhakaāĨ¤

āĻāχ āĻ­ā§āϝāĻžāϞ⧁āϟāĻž āφāĻŽāϰāĻž useParams() āĻšā§āĻ• āĻĻāĻŋā§Ÿā§‡ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

āϕ⧋āĻĄ:

import { useParams } from "react-router";
 
function City() {
  let { city } = useParams();
  let data = useFakeDataLibrary(`/api/v2/cities/${city}`);
 
  return (
    <div>
      <h2>{city} āĻļāĻšāϰ⧇āϰ āϤāĻĨā§āϝ</h2>
      {/* āĻĄā§‡āϟāĻž āĻĻ⧇āĻ–āĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻ•āύāĻŸā§‡āĻ¨ā§āϟ */}
    </div>
  );
}

👉 āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ, useParams() āĻāĻ•āϟāĻž āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇, āϝ⧇āĻ–āĻžāύ⧇ city āĻšāĻšā§āϛ⧇ āϏ⧇āχ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āĻ…āĻ‚āĻļ⧇āϰ āύāĻžāĻŽāĨ¤


⧍. 🔍 URL Search Params — ? āϚāĻŋāĻšā§āύ⧇āϰ āĻĒāϰ⧇āϰ āĻĄā§‡āϟāĻž āĻĒ⧜āĻž

āĻ…āύ⧇āĻ• āϏāĻŽā§Ÿ URL āĻ āφāĻŽāϰāĻž āĻ•āĻŋāϛ⧁ āϕ⧁āχāϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĒāĻžāĻ āĻžāχ, āϝ⧇āĻŽāύ:

/search?q=react

āĻāĻ–āĻžāύ⧇ q=react āĻšāϞ⧋ āĻāĻ•āϟāĻž search paramāĨ¤

React Router āĻ āφāĻŽāϰāĻž useSearchParams() āĻšā§āĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāϏāĻŦ āĻĄā§‡āϟāĻž āĻĒ⧜āϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:

import { useSearchParams } from "react-router-dom";
 
function SearchResults() {
  let [searchParams] = useSearchParams();
  let query = searchParams.get("q");
 
  return (
    <div>
      <p>
        āφāĻĒāύāĻŋ āϏāĻžāĻ°ā§āϚ āĻ•āϰ⧇āϛ⧇āύ: <i>{query}</i>
      </p>
      <FakeSearchResults />
    </div>
  );
}

👉 useSearchParams() āĻĨ⧇āϕ⧇ āφāĻŽāϰāĻž URLSearchParams āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻĒāĻžāχ, āϝ⧇āϟāĻž āĻĨ⧇āϕ⧇ .get("key") āĻĻāĻŋā§Ÿā§‡ āϝ⧇āϕ⧋āύ⧋ āĻ­ā§āϝāĻžāϞ⧁ āĻŦ⧇āϰ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤


ā§Š. 🧭 Location Object — āĻŦāĻ°ā§āϤāĻŽāĻžāύ URL āĻāϰ āĻĒā§‚āĻ°ā§āĻŖ āϤāĻĨā§āϝ

React Router useLocation() āĻšā§āϕ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻž location object āĻĻā§‡ā§Ÿ, āϝ⧇āĻ–āĻžāύ⧇ URL āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻ…āύ⧇āĻ• āĻĻāϰāĻ•āĻžāϰāĻŋ āϤāĻĨā§āϝ āĻĨāĻžāϕ⧇āĨ¤

āĻāϟāĻž āĻ…āύ⧇āĻ• āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇, āϝ⧇āĻŽāύ:

  • analytics āĻĒāĻžāĻ āĻžāϤ⧇
  • āĻ¸ā§āĻ•ā§āϰāϞ āĻĒāϜāĻŋāĻļāύ āϰāĻŋāĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāϤ⧇
  • āύāϤ⧁āύ āĻĒ⧇āĻœā§‡ āύ⧇āĻ­āĻŋāϗ⧇āϟ āĻšāϞ⧇ āĻ•āĻŋāϛ⧁ āĻ•āĻžāϜ āϚāĻžāϞāĻžāϤ⧇

āωāĻĻāĻžāĻšāϰāĻŖ ā§§: Analytics

import { useLocation } from "react-router-dom";
import { useEffect } from "react";
 
function useAnalytics() {
  let location = useLocation();
 
  useEffect(() => {
    sendFakeAnalytics(location.pathname);
  }, [location]);
}

👉 āĻāĻ–āĻžāύ⧇, āϝāĻ–āύāχ āχāωāϜāĻžāϰ āύāϤ⧁āύ āϕ⧋āύ⧋ āĻĒ⧇āĻœā§‡ āϝāĻžā§Ÿ, āϤāĻ–āύ location.pathname āφāĻĒāĻĄā§‡āϟ āĻšā§Ÿ, āφāϰ āϏ⧇āϟāĻž āφāĻŽāϰāĻž āϧāϰ⧇ Analytics āĻĒāĻžāĻ āĻŋā§Ÿā§‡ āĻĻ⧇āχāĨ¤


āωāĻĻāĻžāĻšāϰāĻŖ ⧍: Scroll Restoration

import { useLocation } from "react-router-dom";
import { useEffect } from "react";
 
function useScrollRestoration() {
  let location = useLocation();
 
  useEffect(() => {
    fakeRestoreScroll(location.key);
  }, [location]);
}

👉 āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āύāϤ⧁āύ āĻĒ⧇āĻœā§‡ āϗ⧇āϞ⧇ āφāϞāĻžāĻĻāĻž location.key āϤ⧈āϰāĻŋ āĻšā§Ÿ, āϝ⧇āϟāĻž āĻĻāĻŋā§Ÿā§‡ āφāĻŽāϰāĻž āφāϗ⧇āϰ āĻ¸ā§āĻ•ā§āϰāϞ āĻĒāϜāĻŋāĻļāύ āφāĻŦāĻžāϰ āϰāĻŋāĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤


✨ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇

āĻŦāĻŋāώ⧟āϕ⧀ āĻĒāĻžā§ŸāĻ•āĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ
useParams()/path/:id āϟāĻžāχāĻĒ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āϰ⧁āϟ āĻ­ā§āϝāĻžāϞ⧁āϝāĻ–āύ route āĻ āĻĄāĻžā§ŸāύāĻžāĻŽāĻŋāĻ• āĻ…āĻ‚āĻļ āĻĨāĻžāϕ⧇
useSearchParams()?query=value āϟāĻžāχāĻĒ āϕ⧁āχāϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāϝāĻ–āύ āχāωāφāϰāĻāϞ⧇āϰ āϕ⧁āχāϰāĻŋ āĻĨ⧇āϕ⧇ āĻĄā§‡āϟāĻž āϞāĻžāϗ⧇
useLocation()āĻĒ⧁āϰ⧋ URL āĻ“ āύ⧇āĻ­āĻŋāϗ⧇āĻļāύ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āϤāĻĨā§āϝāϝāĻ–āύ āύ⧇āĻ­āĻŋāϗ⧇āĻļāύ⧇āϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋ⧟āĻžā§Ÿ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āϚāĻžāύ

✅ āωāĻĒāϏāĻ‚āĻšāĻžāϰ

React Router āφāĻŽāĻžāĻĻ⧇āϰ āχāωāφāϰāĻāϞ āĻĨ⧇āϕ⧇ āĻĻāϰāĻ•āĻžāϰāĻŋ āĻĄā§‡āϟāĻž āĻŦ⧇āϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏ⧁āĻ¨ā§āĻĻāϰ āĻ“ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻšā§āĻ• āĻĻā§‡ā§Ÿ — useParams, useSearchParams, āĻāĻŦāĻ‚ useLocationāĨ¤ āĻāϗ⧁āϞ⧋āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ āĻŋāĻ•āĻ āĻžāĻ• āϜāĻžāύāϞ⧇ āφāĻĒāύāĻŋ āϖ⧁āĻŦ āϏāĻšāĻœā§‡āχ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āϰāĻžāωāϟāĻŋāĻ‚ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύāĨ¤


đŸŸĸ āφāĻĒāύāĻŋ āϚāĻžāχāϞ⧇ āĻāχ āϞ⧇āĻ–āĻžāϟāĻŋ āĻŦā§āϞāĻ— āĻĒā§‹āĻ¸ā§āϟ āĻŦāĻž āĻŦāĻ‡ā§Ÿā§‡āϰ āĻ…āĻ§ā§āϝāĻžā§Ÿ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϚāĻžāχāϞ⧇ āφāĻŽāĻŋ Markdown āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡āĻ“ āϏāĻžāϜāĻŋā§Ÿā§‡ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āφāϰ⧇āĻ•āϟāĻŋ āϟāĻĒāĻŋāϕ⧇āϰ āĻĻāϰāĻ•āĻžāϰ āĻšāϞ⧇ āĻļ⧁āϧ⧁ āĻŦāϞ⧁āύ, āφāĻŽāĻŋ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ! đŸ’ģâœī¸


Š 2024 - 2026 React JS Bangla Tutorial.