āĻ
āϏāĻžāϧāĻžāϰāĻŖ! āĻāĻāύ āĻāĻŽāϰāĻž react-router-dom āĻāϰ URL Values āĻŦāĻŋāώā§āĻāĻŋ āύāĻŋā§ā§ āĻāĻāĻāĻž āĻŦā§āϞāĻ āĻĒā§āϏā§āĻ āϞāĻŋāĻāĻŦâ
āϏā§āĻāĻļāύ āĻŦāĻžāĻ āϏā§āĻāĻļāύ,
āĻāĻāĻĻāĻŽ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύā§āϰ āĻŽāϤ⧠āĻā§āĻāĻŋā§ā§,
āĻāĻŋāύā§āϤ⧠āϏāĻšāĻ, āĻĒā§āϰāĻžāĻā§āĻāϞ āĻāĻŦāĻ āĻŦāĻžāĻāϞāĻž āĻāĻžāώāĻžā§, āϝā§āύ React āĻļā§āĻāĻž āĻšā§ā§ āĻāĻ ā§ āĻŦāύā§āϧā§āϰ āĻŽāϤ⧠āϏāĻšāĻāĨ¤
đ URL Values â React Router āĻ āĻāĻāĻāϰāĻāϞ āĻĨā§āĻā§ āϤāĻĨā§āϝ āĻĒā§āĻžāϰ āϏāĻšāĻ āĻāĻĒāĻžā§
React Router āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻāĻŽāϰāĻž āĻ āύā§āĻ āϏāĻŽā§ URL āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒā§ā§ āĻāĻŽāĻžāĻĻā§āϰ āĻ ā§āϝāĻžāĻĒāĻā§ āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āĻāϰāϤ⧠āĻāĻžāĻāĨ¤ āĻāĻ āĻĄā§āĻāĻžāĻā§āϞā§āĻā§ āĻŦāϞ⧠URL ValuesāĨ¤ āĻāĻ āĻāĻĒāĻŋāĻā§ āĻāĻŽāϰāĻž āϤāĻŋāύāĻāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻŋāύāĻŋāϏ āĻļāĻŋāĻāĻŦ:
- Route Params
- URL Search Params
- 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 āĻĢāϰāĻŽā§āϝāĻžāĻā§āĻ āϏāĻžāĻāĻŋā§ā§ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ āĻāϰā§āĻāĻāĻŋ āĻāĻĒāĻŋāĻā§āϰ āĻĻāϰāĻāĻžāϰ āĻšāϞ⧠āĻļā§āϧ⧠āĻŦāϞā§āύ, āĻāĻŽāĻŋ āĻĒā§āϰāϏā§āϤā§āϤ! đģâī¸