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 dish.

  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 dish, use await getReviews(slug) e adicione uma <section> abaixo do article .detail.
  4. Ela contém <form id="review-form" action={addReview}> com um input oculto name="slug" contendo o slug, um input 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> por review, 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