Bước 3: Trang món ăn
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 41 trên 47.
Thử thách
Trung bìnhTạo một trang cho mỗi món ăn.
- Trong
app/page.jsx, bọc nội dung của mỗi thẻ bằng<Link>vớiid={'link-' + dish.slug}vàhref={'/menu/' + dish.slug}. - Hoàn thiện tệp
app/menu/[slug]/page.jsx:const { slug } = await params;, sau đó gọiawait getDish(slug). - Nếu không có món ăn, gọi
notFound()từnext/navigation. - Nếu có món ăn, hãy kết xuất một
<article className="detail">với một<div id="dish-thumb" className="detail-thumb">(emoji và kiểu nền chuyển sắc), bên cạnh là<h1 id="dish-name">,<p id="dish-stars" className="stars">hiển thị'★'.repeat(dish.rating),<p id="dish-desc">và<span id="dish-price" className="price">. - Hoàn thiện tệp
app/menu/[slug]/not-found.jsx, phần tử bao ngoài cóid="dish-missing"vàclassName="empty".
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ướng