Bước 9: Tìm kiếm trực tiếp
Thuộc phần Kiến thức thiết yếu về Next.js trong hành trình React của Coddy. Bài học 47 trên 47.
Thử thách
Trung bìnhHoàn thiện Coddy Eats với chức năng tìm kiếm trực tiếp.
- Hoàn thiện tệp
app/api/dishes/route.jsbằng cách xuấtasync function GET(), chờgetDishes()rồi trả vềResponse.json(dishes). - Hoàn thiện tệp
components/SearchBox.jsxvới'use client';, lưu chuỗiqueryvà mảngmatchestrong state. - Hiển thị
<input id="search-input" type="text">được liên kết vớiquery. Khi có thay đổi: nếu văn bản trống, hãy xóa các kết quả; nếu không, hãy gọifetch('/api/dishes'),await response.json()và giữ lại các món ăn cónamechứa văn bản đó, không phân biệt chữ hoa chữ thường. - Hiển thị
<ul id="search-results" className="reviews">với một<li>cho mỗi kết quả, bên trong có<Link>vớiid={'match-' + dish.slug},href={'/menu/' + dish.slug}, rồi đến emoji, một dấu cách và tên món ăn. - Hiển thị
<SearchBox />bên trong phần hero trênapp/page.jsx.
Tự làm thử
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>
);
}Tất cả bài học trong Kiến thức thiết yếu về Next.js
4Máy chủ và client
Hai loại thành phầnĐọc lỗiDòng 'use client'Giữ phần client nhỏ gọnMáy chủ bên trong clientTóm tắt: máy chủ và client7Điều hướng phía máy khách
Liên kết đang hoạt độngĐiều hướng bằng codeLọc bằng URLBộ xử lý tuyến đườngÔn tập: Điều hướng2Định tuyến và liên kết
Thư mục tạo thành tuyến đườngTuyến đường lồng nhauLiên kết các trangTuyến đường độngTrang không tìm thấyÔn tập: định tuyến5Dữ liệu trên máy chủ
Thành phần bất đồng bộChờ tham số của tuyếnHai lần gọi dữ liệu cùng lúcTrạng thái tảiXử lý lỗiÔn tập: Lấy dữ liệu8Dự án: Coddy Eats
Bước 1: Bộ khungBước 2: Lưới thực đơn