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 la gente deje reseñas sobre un dish.

  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 ejecuta await addReviewToDb(slug, text) y llama a revalidatePath('/menu/' + slug) desde next/cache.
  3. En la página del dish, ejecuta await getReviews(slug) y añade una <section> debajo del artículo .detail.
  4. Debe contener <form id="review-form" action={addReview}> con un input oculto name="slug" que contenga el slug, un input 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 cada 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