Menu
Coddy logo textTech

8단계: 리뷰 남기기

Coddy React 여정의 Next.js 핵심 (Next.js Essentials) 섹션에 포함된 레슨. 47개 중 46번째.

challenge icon

챌린지

중급

사람들이 요리를 리뷰할 수 있도록 하세요.

  1. 'use server';로 시작하는 app/actions.js 파일을 완성하고 async function addReview(formData)를 export하세요.
  2. form data에서 slugtext를 읽고, 비어 있는 text는 무시한 다음 await addReviewToDb(slug, text)를 실행하고 next/cacherevalidatePath('/menu/' + slug)를 호출하세요.
  3. 요리 페이지에서 await getReviews(slug)를 실행하고 .detail article 아래에 <section>을 추가하세요.
  4. 그 안에 숨겨진 input이 포함된 <form id="review-form" action={addReview}>을 배치하세요. 숨겨진 input의 name="slug"는 slug를 전달하고, 텍스트 input은 id="review-input" name="text"를 사용하며, <button id="review-submit" type="submit">도 추가하세요.
  5. form 아래에 <ul id="review-list" className="reviews">를 렌더링하고, 리뷰마다 하나의 <li>를 배치하며 각각 id={'review-' + index}를 지정하세요.

직접 해보기

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>
    );
}

Next.js 핵심 (Next.js Essentials)의 모든 레슨