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. 폼 데이터에서 slugtext를 읽어오고, 비어있는 text는 무시한 뒤, await addReviewToDb(slug, text)를 호출하고 next/cache에서 revalidatePath('/menu/' + slug)를 호출하세요.
  3. 요리 페이지에서 await getReviews(slug)를 실행하고 .detail article 요소 아래에 <section>을 추가하세요.
  4. 해당 섹션 안에는 slug 값을 전달하는 hidden input name="slug", 텍스트 입력인 id="review-input" name="text", 그리고 <button id="review-submit" type="submit">을 포함하는 <form id="review-form" action={addReview}>을 배치하세요.
  5. 폼 아래에는 각 리뷰당 하나씩 id={'review-' + index} 속성을 가진 <li>를 사용하는 <ul id="review-list" className="reviews">를 렌더링하세요.

직접 해보기

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)의 모든 레슨