8단계: 리뷰 남기기
Coddy React 여정의 Next.js 핵심 (Next.js Essentials) 섹션에 포함된 레슨. 47개 중 46번째.
챌린지
중급사람들이 요리를 리뷰할 수 있도록 하세요.
'use server';로 시작하는app/actions.js파일을 완성하고async function addReview(formData)를 export하세요.- form data에서
slug와text를 읽고, 비어 있는text는 무시한 다음await addReviewToDb(slug, text)를 실행하고next/cache의revalidatePath('/menu/' + slug)를 호출하세요. - 요리 페이지에서
await getReviews(slug)를 실행하고.detailarticle 아래에<section>을 추가하세요. - 그 안에 숨겨진 input이 포함된
<form id="review-form" action={addReview}>을 배치하세요. 숨겨진 input의name="slug"는 slug를 전달하고, 텍스트 input은id="review-input" name="text"를 사용하며,<button id="review-submit" type="submit">도 추가하세요. - 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)의 모든 레슨
8프로젝트: Coddy Eats
1단계: 기본 셸 구성