Skip to main content

Що робить useSearchParams()?

Що робить useSearchParams()

useSearchParams() дозволяє:

  1. читати параметри з URL (?page=2&sort=asc)
  2. змінювати їх (наприклад, setSearchParams({ page: 3 }))
  3. оновлювати рядок запиту без перезавантаження сторінки

Приклад базового використання

javascript
import { useSearchParams } from "react-router-dom"; function ProductsList() { const [searchParams, setSearchParams] = useSearchParams(); const page = searchParams.get("page") || 1; const sort = searchParams.get("sort") || "asc"; return ( <div> <p>Поточна сторінка: {page}</p> <p>Сортування: {sort}</p> <button onClick={() => setSearchParams({ page: 2, sort: "desc" })}> Змінити параметри </button> </div> ); }

Якщо URL =

javascript
https://example.com/products?page=1&sort=asc

searchParams.get("page")"1" searchParams.get("sort")"asc"

При кліку на кнопку URL зміниться на:

javascript
https://example.com/products?page=2&sort=desc

Без перезавантаження сторінки.


Що повертає useSearchParams()

Хук повертає масив із двох елементів:

javascript
const [searchParams, setSearchParams] = useSearchParams();
ЕлементТипПризначення
searchParamsURLSearchParamsДозволяє читати параметри (get, has, entries тощо)
setSearchParams(params) => voidДозволяє оновлювати рядок запиту

Методи об'єкта searchParams

МетодОписПриклад
.get(name)Повертає значення параметраsearchParams.get("page")
.getAll(name)Повертає масив усіх значень параметраsearchParams.getAll("tag")
.has(name)Перевіряє, чи є параметрsearchParams.has("sort")
.entries()Ітератор по всіх парах ключ-значенняfor (const [k,v] of searchParams.entries())
.toString()Повертає рядок запитуpage=2&sort=asc

Приклад читання параметрів

javascript
function Blog() { const [searchParams] = useSearchParams(); const category = searchParams.get("category"); const tag = searchParams.get("tag"); return ( <h2> Категорія: {category}, Тег: {tag} </h2> ); }

URL:

javascript
/blog?category=react&tag=hooks

Виведе:

javascript
Категорія: react, Тег: hooks

Приклад зміни параметрів

javascript
const [searchParams, setSearchParams] = useSearchParams(); function handleNextPage() { const nextPage = Number(searchParams.get("page") || 1) + 1; setSearchParams({ page: nextPage }); }

При виклику handleNextPage() URL змінюється:

javascript
?page=1?page=2

Сторінка не перезавантажується, React Router просто оновлює адресний рядок.


Приклад комбінування зі станом

javascript
const [searchParams, setSearchParams] = useSearchParams(); const [filter, setFilter] = useState(searchParams.get("filter") || ""); useEffect(() => { setSearchParams({ filter }); }, [filter]);

Тепер зміна стану filter буде синхронізована з URL.


Навіщо це потрібно

ЗадачаЧому useSearchParams() ідеально підходить
Фільтри і сортуванняМожна зберігати вибрані фільтри в URL
ПагінаціяПоточна сторінка зберігається як ?page=2
Шеринг посиланьМожна скопіювати посилання з параметрами і поділитися
Синхронізація зі станомReact state ↔ URL
Навігація без перезавантаженняЗмінюємо параметри, але лишаємося на тій самій сторінці

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.