Menu
Coddy logo textTech

Etapa 8: Deixar uma Avaliação

Parte da seção Essenciais do Next.js do Journey de React da Coddy. Lição 46 de 47.

challenge icon

Desafio

Médio

Permita que as pessoas avaliem um prato.

  1. Conclua o arquivo app/actions.js começando com 'use server'; e exporte async function addReview(formData).
  2. Leia slug e text dos dados do formulário, ignore um text vazio, depois use await addReviewToDb(slug, text) e chame revalidatePath('/menu/' + slug) de next/cache.
  3. Na página do prato, use await getReviews(slug) e adicione uma <section> abaixo do artigo .detail.
  4. Ela contém <form id="review-form" action={addReview}> com um campo de entrada oculto name="slug" que contém o slug, um campo de texto id="review-input" name="text" e <button id="review-submit" type="submit">.
  5. Abaixo do formulário, renderize <ul id="review-list" className="reviews"> com um <li> para cada avaliação, cada um com id={'review-' + index}.

Experimente você mesmo

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

Todas as lições de Essenciais do Next.js