Dans ce chapitre, vous allez construire un client React.js qui envoie des requêtes au serveur, et qui traite les données reçues.
import axios from 'axios';
dans App.js.Pour extraire la liste des personnes, utilisez axios comme suit :
function App() {
const [persons, setPersons] = useState([]);
async function getPersons() {
const persons = (await axios.get('http://localhost:8000/persons')).data;
setPersons(persons);
}
useEffect(() => {
getPersons()
},[]);
Remarques :
persons
définie dans la fonction App
est un tableau vide. Pour plus d’informations concernant la gestion des états avec React.js, consultez la documentation React.js sur useState.getPersons
est déclarée async à cause du délai de réponse du serveur. Dans notre cas, ce délai est imperceptible car le client est le serveur sont sur le même poste. Dans un cas réel, des temps de réponse plus longs peuvent être observés.useEffect
est appelée juste avant l’affichage dans le navigateur. Remarquez le deuxième argument qui est ici un tableau vide. Pour plus de détails, vous pouvez vous référer à la documentation React.js sur useEffectSur le serveur, passez en commentaire la ligne faisant appel au package CORS et observez le résultat sur le client. Reportez-vous à la documentation de ce package pour comprendre son fonctionnement.
Pour insérer une nouvelle personne, vous allez avoir besoin de créer un formulaire, puis d’envoyer son contenu au serveur à l’aide de la méthode POST.
Dans la fonction App
, générez un formulaire comprenant
insertPerson
décrire ci-dessousAjoutez la fonction insertPerson
dont le code est donné ci-dessous :
async function insertPerson(e) {
e.preventDefault();
const p = (await axios.post('http://localhost:8000/persons', {name: e.target.name.value})).data;
setPersons([...persons, p]);
}
Remarques
persons
. L’ajout d’une nouvelle valeur au tableau persons
se fait à l’aide de l’opérateur spreadQuestions :
e.target
?e.target.name
?e.target.name.value
?persons
?Votre code devient maintenant trop complexe, il faut le réorganiser pour qu’il reste lisible.
Dans votre fichier App.js, créez une fonction Formulaire
qui permet d’afficher un formulaire, et utilisez-là dans la fonction App
.
insertPerson
créée précédemment.insertPerson
doit pouvoir accéder au tableau persons
et à la fonction setPersons
définis dans la fonction App
.Créez une fonction ListePersonnes
qui affiche l’ensemble des personnes dans une liste à puces.
Créez maintenant un fichier Formulaire.js dans lequel vous placez le code de la fonction Formulaire. Faites de même avec la fonction ListePersonne. Vos fonction doivent maintenant être importées dans le fichier App.js pour que votre application continue de fonctionner.
Pour supprimer une personne, il faut envoyer une requête DELETE au serveur à l’aide du package axios. Modifiez la fonction ListePersonnes
de sorte qu’un évènement click sur une croix :
Pour modifier une personne, il faut envoyer une requête PATCH au serveur à l’aide du package axios. S’il vous reste un peu de temps, vous pouvez adapter votre code pour gérer cette dernière fonctionnalité.