Розробка Функціоналу Пошуку
Свайпніть щоб показати меню
Теорія
Перш ніж реалізовувати функціонал пошуку, важливо ознайомитися з цими клієнтськими хуками.
useSearchParams;- Надає доступ до поточних параметрів URL;
- Приклад: Для URL
/dashboard/invoices?page=1&query=pendingповертає{page: '1', query: 'pending'}.
usePathname;- Зчитує поточний шлях URL;
- Приклад: Для маршруту
domain/dashboard/invoices,usePathnameповертає"/dashboard/invoices".
useRouter.- Дозволяє навігацію між маршрутами у клієнтських компонентах, пропонуючи декілька методів.
Огляд етапів реалізації:
- Отримання введення користувача;
- Оновлення URL з параметрами пошуку;
- Синхронізація URL з полем введення;
- Оновлення таблиці відповідно до пошукового запиту.
Повернення до проєкту
1. Отримання введення користувача
- Відкрити компонент
Search(app/ui/search.tsx); - Звернути увагу на використання
'use client', що вказує на доступність обробників подій та хуків; - Використати функцію
handleSearch, яка викликається при кожній зміні введення.
Після впровадження відкрийте Консоль розробника у вашому браузері. Ви повинні побачити будь-який текст, введений у поле введення, відображений у консолі браузера.
2. Оновлення URL з параметрами пошуку
- Імпортувати хук
useSearchParamsз'next/navigation'та присвоїти його змінній; - Усередині функції
handleSearchстворити новий екземплярURLSearchParams, використовуючи раніше визначену змінну (searchParams). Ця утиліта надає методи для роботи з параметрами запиту в URL; - Встановити рядок параметрів відповідно до введення користувача. Якщо поле порожнє — видалити його;
- Використати хуки
useRouterтаusePathnameз'next/navigation'і застосувати методreplaceзuseRouter()у межахhandleSearch.${pathname}— поточний шлях, наприклад,"/dashboard/invoices";- Під час введення в пошуковий рядок
params.toString()перетворює введене у формат, придатний для URL; replace(${pathname}?${params.toString()})оновлює URL з даними пошуку користувача (наприклад,/dashboard/invoices?query=qwerty).
URL оновлюється без перезавантаження сторінки завдяки клієнтській навігації Next.js.
Після впровадження будь-який текст, введений у поле, буде відображатися в URL.
3. Синхронізація URL з полем введення
Щоб поле введення відповідало URL і автоматично заповнювалося при поширенні посилання, використовуйте defaultValue, зчитуючи значення з searchParams.
4. Оновлення таблиці відповідно до пошукового запиту
Нарешті, оновіть компонент Table, щоб він відображав результати пошуку. Компоненти сторінок приймають проп під назвою searchParams. Передайте поточні параметри URL до компонента <Table>.
Не забудьте розкоментувати компонент Table.
Чудово! Ви успішно додали функціонал пошуку до свого застосунку. Спробуйте — чи працює він? 😊
У наступному розділі розглянемо пагінацію, оскільки наразі на сторінці відображається лише 6 рахунків.
На практиці
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат