Menu
Coddy logo textTech

Paso 8: Dejar una reseña

Parte de la sección Esenciales de Next.js del Journey de React de Coddy. Lección 46 de 47.

challenge icon

Desafío

Intermedio

Permite que las personas reseñen un plato.

  1. Completa el archivo app/actions.js comenzando con 'use server'; y exporta async function addReview(formData).
  2. Lee slug y text de los datos del formulario, ignora un text vacío, después await addReviewToDb(slug, text) y llama a revalidatePath('/menu/' + slug) desde next/cache.
  3. En la página del plato, usa await getReviews(slug) y añade una <section> debajo del artículo .detail.
  4. Este contiene <form id="review-form" action={addReview}> con un campo de entrada oculto name="slug" que contiene el slug, un campo de entrada de texto id="review-input" name="text" y <button id="review-submit" type="submit">.
  5. Debajo del formulario, renderiza <ul id="review-list" className="reviews"> con un <li> por reseña, cada uno con id={'review-' + index}.

Pruébalo tú mismo

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 las lecciones de Esenciales de Next.js