Krok 9: Wyszukiwanie na żywo
Część sekcji Podstawy Next.js ścieżki React w Coddy. Lekcja 47 z 47.
Wyzwanie
ŚredniDokończ Coddy Eats, dodając wyszukiwanie na żywo.
- Uzupełnij plik
app/api/dishes/route.js, eksportującasync function GET(), która wywołujegetDishes()za pomocą await i zwracaResponse.json(dishes). - Uzupełnij plik
components/SearchBox.jsx, dodając'use client';oraz przechowując w stanie ciąg znakówqueryi tablicęmatches. - Wyświetl
<input id="search-input" type="text">powiązany ze zmiennąquery. Po zmianie: jeśli tekst jest pusty, wyczyść pasujące wyniki; w przeciwnym razie wykonajfetch('/api/dishes'),await response.json()i zachowaj te dania, którychnamezawiera tekst (bez uwzględniania wielkości liter). - Wyświetl
<ul id="search-results" className="reviews">z elementem<li>dla każdego pasującego wyniku, zawierającym element<Link>zid={'match-' + dish.slug},href={'/menu/' + dish.slug}oraz emoji, spacją, a następnie nazwą. - Wyświetl
<SearchBox />wewnątrz sekcji hero w plikuapp/page.jsx.
Spróbuj swoich sił
import Link from 'next/link';
import './globals.css';
export const metadata = {
title: {
default: 'Coddy Eats',
template: '%s | Coddy Eats',
},
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<nav className="nav">
<Link className="brand" href="/">Coddy Eats</Link>
<Link id="nav-menu" href="/">Menu</Link>
<Link id="nav-desserts" href="/?category=dessert">Desserts</Link>
</nav>
<div className="container">
{children}
</div>
</body>
</html>
);
}Wszystkie lekcje w sekcji Podstawy Next.js
4Serwer i klient
Dwa rodzaje komponentówOdczytywanie błęduLinia „use client”Ograniczaj części klienckieSerwer wewnątrz klientaPodsumowanie: serwer i klient7Nawigacja po stronie klienta
Aktywny linkRouting programowyFiltrowanie za pomocą URLObsługa trasPodsumowanie: nawigacja2Routing i linki
Foldery to ścieżkiZagnieżdżone ścieżkiŁączenie stronDynamiczne ścieżkiStrony nie znalezionoPodsumowanie: routing5Dane na serwerze
Komponenty asynchroniczneOczekiwanie na parametry trasyDwa pobrania narazStany ładowaniaObsługa błędówPodsumowanie: pobieranie danych8Projekt: Coddy Eats
Krok 1: Szkielet