Menu
CoddyTech

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.

challenge icon

Thử thách

Trung bình

Cho phép mọi người đánh giá một món ăn.

  1. Hoàn thiện tệp app/actions.js, bắt đầu bằng 'use server'; và xuất async function addReview(formData).
  2. Đọc slug và text từ dữ liệu biểu mẫu, bỏ qua text rỗng, sau đó gọi await addReviewToDb(slug, text) và gọi revalidatePath('/menu/' + slug) từ next/cache.
  3. Trong trang món ăn, gọi await getReviews(slug) và thêm một <section> bên dưới phần tử .detail.
  4. Phần này chứa <form id="review-form" action={addReview}> với một ô nhập ẩn name="slug" chứa slug, một ô nhập văn bản id="review-input" name="text" và <button id="review-submit" type="submit">.
  5. 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