Як отримати query-параметри з URL?
Що таке query-параметри
Приклад URL:
javascript
https://example.com/products?page=2&sort=price_asc&category=shirtsQuery-параметри - це частина після ?:
javascript
page=2&sort=price_asc&category=shirtsСпосіб 1. Через хук useSearchParams() (React Router v6+)
Це найзручніший і найбільш "реактовий" спосіб, якщо ти використовуєш react-router-dom.
javascript
import { useSearchParams } from "react-router-dom";
function ProductList() {
const [searchParams] = useSearchParams();
const page = searchParams.get("page");
const sort = searchParams.get("sort");
const category = searchParams.get("category");
return (
<div>
<p>Сторінка: {page}</p>
<p>Сортування: {sort}</p>
<p>Категорія: {category}</p>
</div>
);
}Якщо користувач відкриє:
/products?page=2&sort=price_asc&category=shirts
Ти отримаєш:
javascript
page = "2"
sort = "price_asc"
category = "shirts"Спосіб 2. Через useLocation() + URLSearchParams
Якщо тобі потрібно більше контролю над URL (наприклад, комбінувати з hash або pathname):
javascript
import { useLocation } from "react-router-dom";
function ProductList() {
const location = useLocation();
const params = new URLSearchParams(location.search);
const page = params.get("page");
const sort = params.get("sort");
return (
<p>Page: {page}, Sort: {sort}</p>
);
}location.search поверне рядок на кшталт "?page=2&sort=asc",
а URLSearchParams перетворює його на зручний API для читання.
Спосіб 3. Без React Router (чистий JavaScript)
Якщо ти не використовуєш react-router-dom, можна дістати параметри напряму з window.location.
javascript
const params = new URLSearchParams(window.location.search);
const page = params.get("page");
const sort = params.get("sort");
console.log(page, sort);Працює в будь-якому сучасному браузері.
Додаткові можливості URLSearchParams
javascript
const params = new URLSearchParams("?page=2&sort=asc&filter=red");
params.get("page"); // "2"
params.has("filter"); // true
params.getAll("tag"); // всі значення з однаковим ключем
params.toString(); // "page=2&sort=asc&filter=red"
for (const [key, value] of params.entries()) {
console.log(key, value);
}Що обрати
| Підхід | Коли використовувати |
|---|---|
useSearchParams() | Для більшості випадків у React Router v6+ (зручний API і автоматична синхронізація) |
useLocation() + URLSearchParams | Коли потрібно більше контролю (наприклад, комбінувати з pathname або state) |
window.location | Поза React Router, наприклад у звичайному JS-коді або зовнішньому скрипті |
Підсумок:
Щоб отримати query-параметри в React:
через React Router:
javascriptconst [params] = useSearchParams(); const page = params.get("page");через нативний JS:
javascriptconst params = new URLSearchParams(window.location.search); const page = params.get("page");
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.