Menu
Coddy logo textTech

Étape 8 : Laisser un avis

Fait partie de la section L'essentiel de Next.js du Journey React de Coddy. Leçon 46 sur 47.

challenge icon

Défi

Moyen

Permettez aux utilisateurs de laisser un avis sur un plat.

  1. Complétez le fichier app/actions.js en commençant par 'use server'; et exportez async function addReview(formData).
  2. Lisez slug et text depuis les données du formulaire, ignorez un text vide, puis exécutez await addReviewToDb(slug, text) et appelez revalidatePath('/menu/' + slug) depuis next/cache.
  3. Dans la page du plat, exécutez await getReviews(slug) et ajoutez une <section> sous l’article .detail.
  4. Elle contient <form id="review-form" action={addReview}> avec un champ masqué name="slug" contenant le slug, un champ texte id="review-input" name="text", et <button id="review-submit" type="submit">.
  5. Sous le formulaire, affichez <ul id="review-list" className="reviews"> avec un <li> par avis, chacun ayant id={'review-' + index}.

Essayez vous-même

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

Toutes les leçons de L'essentiel de Next.js