Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Розробка Функціоналу Пошуку | Розширені Можливості Next.js та Оптимізації
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Майстерність Next.js 14 для Створення Сучасних Вебзастосунків

bookРозробка Функціоналу Пошуку

Теорія

Перш ніж реалізовувати функціонал пошуку, важливо ознайомитися з цими клієнтськими хуками.

  • useSearchParams;
    • Надає доступ до поточних параметрів URL;
    • Приклад: Для URL /dashboard/invoices?page=1&query=pending повертає {page: '1', query: 'pending'}.
  • usePathname;
    • Зчитує поточний шлях URL;
    • Приклад: Для маршруту domain/dashboard/invoices, usePathname повертає "/dashboard/invoices".
  • useRouter.
    • Дозволяє навігацію між маршрутами у клієнтських компонентах, пропонуючи декілька методів.

Огляд етапів реалізації:

  1. Отримання введення користувача;
  2. Оновлення URL з параметрами пошуку;
  3. Синхронізація URL з полем введення;
  4. Оновлення таблиці відповідно до пошукового запиту.

Повернення до проєкту

1. Отримання введення користувача

  1. Відкрити компонент Search (app/ui/search.tsx);
  2. Звернути увагу на використання 'use client', що вказує на доступність обробників подій та хуків;
  3. Використати функцію handleSearch, яка викликається при кожній зміні введення.

Після впровадження відкрийте Консоль розробника у вашому браузері. Ви повинні побачити будь-який текст, введений у поле введення, відображений у консолі браузера.

2. Оновлення URL з параметрами пошуку

  1. Імпортувати хук useSearchParams з 'next/navigation' та присвоїти його змінній;
  2. Усередині функції handleSearch створити новий екземпляр URLSearchParams, використовуючи раніше визначену змінну (searchParams). Ця утиліта надає методи для роботи з параметрами запиту в URL;
  3. Встановити рядок параметрів відповідно до введення користувача. Якщо поле порожнє — видалити його;
  4. Використати хуки 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 рахунків.

На практиці

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 6. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain how the useSearchParams hook works in more detail?

How does the Table component use the query and currentPage props to filter data?

What should I do if the search input and URL are not staying in sync?

bookРозробка Функціоналу Пошуку

Свайпніть щоб показати меню

Теорія

Перш ніж реалізовувати функціонал пошуку, важливо ознайомитися з цими клієнтськими хуками.

  • useSearchParams;
    • Надає доступ до поточних параметрів URL;
    • Приклад: Для URL /dashboard/invoices?page=1&query=pending повертає {page: '1', query: 'pending'}.
  • usePathname;
    • Зчитує поточний шлях URL;
    • Приклад: Для маршруту domain/dashboard/invoices, usePathname повертає "/dashboard/invoices".
  • useRouter.
    • Дозволяє навігацію між маршрутами у клієнтських компонентах, пропонуючи декілька методів.

Огляд етапів реалізації:

  1. Отримання введення користувача;
  2. Оновлення URL з параметрами пошуку;
  3. Синхронізація URL з полем введення;
  4. Оновлення таблиці відповідно до пошукового запиту.

Повернення до проєкту

1. Отримання введення користувача

  1. Відкрити компонент Search (app/ui/search.tsx);
  2. Звернути увагу на використання 'use client', що вказує на доступність обробників подій та хуків;
  3. Використати функцію handleSearch, яка викликається при кожній зміні введення.

Після впровадження відкрийте Консоль розробника у вашому браузері. Ви повинні побачити будь-який текст, введений у поле введення, відображений у консолі браузера.

2. Оновлення URL з параметрами пошуку

  1. Імпортувати хук useSearchParams з 'next/navigation' та присвоїти його змінній;
  2. Усередині функції handleSearch створити новий екземпляр URLSearchParams, використовуючи раніше визначену змінну (searchParams). Ця утиліта надає методи для роботи з параметрами запиту в URL;
  3. Встановити рядок параметрів відповідно до введення користувача. Якщо поле порожнє — видалити його;
  4. Використати хуки 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 рахунків.

На практиці

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 6. Розділ 2
some-alt