Créer une application de blogging en utilisant React, Partie 4 Mettre à jour et supprimer des messages

Dans la partie précédente de cette série de didacticiels, vous avez vu comment implémenter les fonctionnalités d'ajout et d'affichage de publication. Dans cette partie de la série de didacticiels sur la création d'une application de blogging dans React, vous allez implémenter la fonctionnalité permettant de mettre à jour et de supprimer les articles de blog..

Commencer

Commençons par cloner le code source de la dernière partie de la série.

https://github.com/royagasthyan/ReactBlogApp-AddPost

Une fois le répertoire cloné, accédez au répertoire du projet et installez les dépendances requises..

cd ReactBlogApp-AddPost npm installer

Démarrez le serveur Node.js et l'application s'exécutera à l'adresse http: // localhost: 7777 / index.html # /.

Création de la vue de mise à jour et de suppression

Modifions la liste des articles de blog pour afficher les données sous forme de tableau avec les icônes de mise à jour et de suppression. Dans la méthode de rendu de la ShowPost composant, remplacez le div avec une table comme indiqué dans le code:

 this.state.posts.map (function (publication, index) retour   .bind (this)) 
# Titre Assujettir
index + 1 titre de l'article post.subject

Comme indiqué dans le code ci-dessus, vous avez modifié le code existant pour afficher les publications sous forme de tableau. Vous avez cartographié le des postes variable à parcourir sur la collection de messages et créer dynamiquement le requis tr et td.

Enregistrez les modifications ci-dessus et redémarrez le serveur. Pointez votre navigateur sur http: // localhost: 7777 / home # / et vous devriez pouvoir afficher la liste des articles de blog sous forme de tableau..

Implémentation de la fonction Post de mise à jour

Pour implémenter la fonctionnalité de publication de mise à jour, vous devez associer l'événement on-click à l'icône d'édition. Modifier l'icône d'édition envergure comme montré: 

Comme indiqué dans le code ci-dessus, vous avez passé l'identifiant de publication en tant que paramètre du updatePost méthode.

Créer une méthode updatePost à l'intérieur de ShowPost composant.

updatePost (id) hashHistory.push ('/ addPost /' + id); 

Comme indiqué dans le code ci-dessus, vous avez déclenché la redirection vers la page d'ajout de publication avec l'id de l'élément modifié. Dans la page d'ajout de publication, vous obtiendrez les détails de la publication de blog avec l'identifiant transmis et vous renseignerez les détails..

Modifier le routeur pour inclure un paramètre optionnel id sur la page d'ajout de publication.

À l'intérieur de AddPost composant, créer une méthode appelée getPostWithId chercher les détails de l'article sur le blog avec identifiant. À l'intérieur de getPostWithId méthode, faites un appel AJAX au getPostWithId API à l'intérieur app.js.

getPostWithId () var id = this.props.params.id; var self = this; axios.post ('/ getPostWithId', id: id) .then (fonction (réponse) if (réponse) self.setState (title: response.data.title); self.setState (sujet: response.data.subject);) .catch (function (error) console.log ('error is', error);); 

Avec la réponse reçue du getPostWithId Méthode API, vous avez mis à jour les variables d'état Titre et assujettir

Modifier le Titre et assujettir zones de texte pour afficher la valeur des variables d'état.

Créons maintenant le getPostWithId API à l'intérieur app.js faire un appel de base de données à la base de données MongoDB pour obtenir les détails de la publication avec un identifiant particulier. Voici la getPostWithId Méthode de l'API:

app.post ('/ getPostWithId', fonction (req, res) var id = req.body.id; post.getPostWithId (id, fonction (résultat) res.send (résultat)))

À l'intérieur de post.js fichier, créer une méthode getPostWithId interroger la base de données pour récupérer les détails. Voici à quoi ça ressemble:

getPostWithId: function (id, callback) MongoClient.connect (url, function (err, db) db.collection ('post'). findOne (_id: nouveau mongodb.ObjectID (id), function (err, résultat) ) assert.equal (err, null); if (err == null) callback (résultat) else callback (false))

Comme indiqué dans le code ci-dessus, vous avez utilisé le findOne API pour obtenir les détails de la publication de blog avec un identifiant particulier.

Enregistrez les modifications ci-dessus et essayez d’exécuter le programme. Cliquez sur l'icône d'édition sur la page d'accueil pour rediriger vers la page d'ajout de publication et renseigner le titre et le sujet..

Maintenant, pour mettre à jour les détails de publication de blog, vous devez vérifier la identifiant à l'intérieur de addPost Méthode API dans le app.js. Si c'est un nouveau message, le identifiant sera indéfini.

Modifier le addPost méthode à l'intérieur du AddPost composant pour inclure le identifiant état variable.

axios.post ('/ addPost', titre: this.state.title, sujet: this.state.subject, id: this.state.id)

À l'intérieur de addPost Méthode API, vous devez vérifier si le identifiant paramètre est indéfini ou pas. Si indéfini, cela signifie que c'est un nouveau message, sinon vous devez appeler la méthode update. Voici ce que le addPost La méthode API ressemble à:

app.post ('/ addpost', fonction (req, res) var title = req.body.title; var sujet = req.body.subject; var id = req.body.id; if (id == "| | id == non défini) post.addPost (titre, sujet, fonction (résultat) res.send (résultat);); else post.updatePost (id, titre, sujet, fonction (résultat) res.send (résultat); );  )

À l'intérieur de post.js fichier, créer une méthode appelée updatePost mettre à jour les détails de l'article de blog. Vous allez utiliser le updateOne API pour mettre à jour les détails de la publication de blog avec le particulier identifiant. Voici comment updatePost la méthode ressemble:

updatePost: function (id, titre, sujet, rappel) MongoClient.connect (url, function (err, db) db.collection ('post'). updateOne ("_id": new mongodb.ObjectID (id) , $ set: "title": titre, "subject": sujet, fonction (err, résultat) assert.equal (err, null); if (err == null) callback (true) else callback (false));); 

Enregistrez les modifications ci-dessus et redémarrez le serveur. Connectez-vous à l'application et cliquez sur l'icône d'édition. Modifiez les valeurs existantes et cliquez sur le bouton pour mettre à jour les détails. 

Implémentation de la fonction de suppression de publication

Pour implémenter la fonctionnalité de suppression de publication, vous devez associer l'événement on-click à l'icône de suppression. Modifier l'étendue de l'icône de suppression comme indiqué:

Comme indiqué dans le code ci-dessus, vous avez passé l'identifiant de publication en tant que paramètre du Supprimer le message méthode. 

Créez une méthode appelée Supprimer le message à l'intérieur de ShowPost composant.

deletePost (id) 

Lier la méthode dans le ShowPost composant constructeur.

this.deletePost = this.deletePost.bind (this);

Pour l'utilisation ce à l'intérieur de carte fonction de rappel, vous devez lier ce au carte une fonction. Modifier le carte fonction de rappel comme indiqué:

 this.state.posts.map (function (publication, index) retour  index + 1 titre de l'article post.subject         .bind (this)) 

À l'intérieur de Supprimer le message méthode, ajoutez une invite de confirmation avant d'appeler l'API de suppression.

deletePost (id) if (confirm ('Êtes-vous sûr?')) // L'appel de suppression API post sera là !! 

Ajoutons maintenant le Supprimer le message API à l'intérieur du app.js fichier. L'API lit l'ID de publication de l'appel AJAX et supprime l'entrée dans MongoDB. Voici comment Supprimer le message L'API ressemble:

app.post ('/ deletePost', fonction (req, res) var id = req.body.id; post.deletePost (id, fonction (résultat) res.send (résultat)))

Comme indiqué dans le code ci-dessus, vous appelez le Supprimer le message méthode dans le post.js fichier et retourne le résultat. Créons le Supprimer le message méthode à l'intérieur du post.js fichier.

deletePost: function (id, rappel) MongoClient.connect (url, function (err, db) db.collection ('post'). deleteOne (_id: new mongodb.ObjectID (id), function (err, résultat) ) assert.equal (err, null); console.log ("Suppression de la publication."); if (err == null) callback (true) else callback (false))

Comme on le voit dans le code ci-dessus, le Supprimer le message méthode dans le post.js fichier utilisera le MongoClient se connecter à la base de données de blogs dans MongoDB. En utilisant le Id passé de l'appel AJAX, il supprimera le message de la base de données. 

Mettre à jour le code à l'intérieur du Supprimer le message méthode dans le home.jsx fichier pour inclure l'appel AJAX au Supprimer le message API dans le app.js fichier.

deletePost (id) if (confirm ('Êtes-vous sûr?')) var self = this; axios.post ('/ deletePost', id: id) .then (fonction (réponse) ) .catch (fonction (erreur) ); 

Une fois que l'article du blog a été supprimé, vous devez actualiser la liste des articles du blog en conséquence. Alors créez une nouvelle méthode appelée getPost et déplacez le composantDidMount code à l'intérieur de cette fonction. Voici la getPost méthode:

getPost () var self = this; axios.post ('/ getPost', ) .then (fonction (réponse) console.log ('res is', réponse); self.setState (posts: response.data)) .catch (fonction (erreur) console.log ('erreur est', erreur);); 

Modifier le composantDidMount code comme indiqué:

composantDidMount () this.getPost (); document.getElementById ('homeHyperlink'). className = "active"; document.getElementById ('addHyperLink'). className = ""; 

À l'intérieur de Supprimer le message Rappel d’appel AJAX, appelez le getPost méthode pour mettre à jour la liste des articles de blog.

deletePost (id) if (confirm ('Êtes-vous sûr?')) var self = this; axios.post ('/ deletePost', id: id) .then (function (response) self.getPost ();) .catch (function (error) console.log ('Error is', error) ;); 

Enregistrez les modifications ci-dessus et redémarrez le serveur. Essayez d'ajouter un nouvel article de blog, puis cliquez sur Supprimer de la liste de la grille. Un message de confirmation de suppression vous sera demandé. Une fois que vous cliquez sur le D'accord bouton, l'entrée sera supprimée et la liste des articles de blog sera mise à jour.

Envelopper

Dans ce didacticiel, vous avez vu comment implémenter la fonctionnalité de suppression de blog et de mise à jour dans l'application de blog React. Dans la partie suivante de la série de didacticiels, vous apprendrez à implémenter la page de profil pour un utilisateur connecté..

Faites-nous savoir vos pensées et suggestions dans les commentaires ci-dessous. Le code source de ce tutoriel est disponible sur GitHub.