J’essaie toujours de comprendre ce scénario. Quelqu'un peut-il suggérer quelle est la bonne façon de procéder dans Next.js 13 ?
J'affiche une liste d'utilisateurs dans un composant serveur, par exemple comme ceci (en utilisant MongoDB) :
// UsersList.jsx const UsersList = () => { const users = await usersCollection.getUsers() return ( <div> {users.map(user) => <div>{user}</div>} </div> ) }
Sur la même page j'ai également défini le composant client pour l'ajout d'utilisateurs :
// UsersEdit.jsx 'use client' const UsersEdit = () => { const handleAdd() => // calls POST to /api/users return // render input + button }
Les deux sont affichés ensemble dans la page des composants du serveur, comme indiqué ci-dessous :
// page.jsx const Users = () => { return ( <div> <UsersList /> <UsersEdit /> </div> ) }
Comment dois-je « recharger » ou « notifier » UsersList
qu'un nouvel utilisateur a été ajouté à la collection pour la forcer à afficher les utilisateurs nouveaux/mis à jour ?
https://stackoverflow.com/a/75127011/17964403 C'est idéal pour muter côté client, mais si vous souhaitez faire quelque chose comme rechercher/filtrer en utilisant les entrées du client et que vous souhaitez récupérer les mêmes données, vous pouvez faire quelque chose comme
Dans le composant serveur, vous recevrez le paramètre de recherche comme accessoire, voyez si le paramètre de recherche existe, s'il existe, transmettez ce paramètre dans l'appel de récupération et vous obtiendrez les éléments filtrés.
Pour refléter les données mises à jour par le composant client sur le composant serveur, vous pouvez utiliser
router.refresh()
,其中router
是useRouter()
. Voici un exemple d'utilisation d'une application de liste de tâches :⚠️ : Le même cache de résultats peut être régénéré si la requête de récupération est mise en cache . C'est la raison pour
cache: 'no-store'
cache: 'no-store'
dans cet exemple