Bước 8: Viết đánh giá
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 46 trên 47.
Thử thách
Trung bìnhCho phép mọi người đánh giá một món ăn.
- Hoàn thiện tệp
app/actions.js, bắt đầu bằng'use server';và xuấtasync function addReview(formData). - Đọc
slugvàtexttừ dữ liệu biểu mẫu, bỏ quatextrỗng, sau đó gọiawait addReviewToDb(slug, text)và gọirevalidatePath('/menu/' + slug)từnext/cache. - Trong trang món ăn, gọi
await getReviews(slug)và thêm một<section>bên dưới phần tử.detail. - Phần này chứa
<form id="review-form" action={addReview}>với một ô nhập ẩnname="slug"chứa slug, một ô nhập văn bảnid="review-input" name="text"và<button id="review-submit" type="submit">. - Bên dưới biểu mẫu, hiển thị
<ul id="review-list" className="reviews">với một<li>cho mỗi bài đánh giá, mỗi phần tử cóid={'review-' + index}.
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