Creación de una aplicación de blogs usando React, Parte 4 Actualizar y eliminar publicaciones

En la parte anterior de esta serie de tutoriales, vio cómo implementar la funcionalidad de agregar y mostrar publicaciones. En esta parte de la serie de tutoriales sobre cómo crear una aplicación de blogging en React, implementará la funcionalidad para actualizar y eliminar las publicaciones del blog..

Empezando

Comencemos clonando el código fuente de la última parte de la serie..

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

Una vez que se haya clonado el directorio, vaya al directorio del proyecto e instale las dependencias necesarias.

cd ReactBlogApp-AddPost npm install

Inicie el servidor Node.js y tendrá la aplicación ejecutándose en http: // localhost: 7777 / index.html # /.

Creando la Vista de Actualización y Eliminar

Modifiquemos la lista de publicaciones del blog para mostrar los datos en forma tabular con los iconos de actualización y eliminación. Dentro del metodo de render del ShowPost componente, reemplazar el existente div con una tabla como se muestra en el código:

 this.state.posts.map (function (post, index) return   .bind (esto)) 
# Título Tema
index + 1 título de la entrada post.subject

Como se ve en el código anterior, ha modificado el código existente para mostrar las publicaciones en forma de tabla. Has mapeado el puestos variable para iterar sobre la colección de publicaciones y crear dinámicamente el requerido tr y td.

Guarde los cambios anteriores y reinicie el servidor. Dirija su navegador a http: // localhost: 7777 / home # / y debería poder ver la lista de publicaciones del blog en formato tabular.

Implementando la función de actualización de correos

Para implementar la funcionalidad de actualización de publicación, debe adjuntar el evento de clic al icono de edición. Modificar el icono de edición lapso como se muestra: 

Como se ve en el código anterior, ha pasado el ID de la publicación como un parámetro a la updatePost método.

Crear un método updatePost dentro de ShowPost componente.

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

Como se ve en el código anterior, ha desencadenado la redirección a la página de agregar publicación con el ID del elemento editado. En la página Agregar publicación, obtendrá los detalles de la publicación del blog con la ID aprobada y completará los detalles..

Modifique el enrutador para que incluya un parámetro de ID opcional en la página de publicación posterior.

Dentro de AddPost componente, crea un método llamado getPostWithId para obtener los detalles de la entrada del blog con carné de identidad. Dentro de getPostWithId método, hacer una llamada AJAX a la getPostWithId API dentro app.js.

getPostWithId () var id = this.props.params.id; var self = esto; axios.post ('/ getPostWithId', id: id) .then (función (respuesta) if (response) self.setState (title: response.data.title); self.setState (subject: response.data.subject);) .catch (function (error) console.log ('error is', error);); 

Con la respuesta recibida del getPostWithId Método API, has actualizado las variables de estado. título y tema

Modificar el título y tema cuadros de texto para mostrar el valor de las variables de estado.

Ahora vamos a crear el getPostWithId API dentro app.js para realizar una llamada a la base de datos de MongoDB para obtener los detalles de la publicación con un Id. particular. Aquí está el getPostWithId Método API:

app.post ('/ getPostWithId', function (req, res) var id = req.body.id; post.getPostWithId (id, function (result) res.send (result)))

Dentro de post.js archivo, crea un método getPostWithId para consultar la base de datos para obtener los detalles. Aquí está cómo se ve:

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

Como se ve en el código anterior, ha hecho uso de la Encuentra uno API para obtener los detalles de la publicación del blog con un ID en particular.

Guarde los cambios anteriores e intente ejecutar el programa. Haga clic en el ícono de edición en la página de inicio y se redirigirá a la página de agregar publicación y llenará el título y el tema.

Ahora, para actualizar los detalles de la publicación del blog, deberás verificar el carné de identidad dentro de addPost Método API en el app.js. Si es un nuevo post, el carné de identidad estarán indefinido.

Modificar el addPost metodo dentro del AddPost componente para incluir el carné de identidad variable de estado.

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

Dentro de addPost Método API, debe comprobar si el carné de identidad parámetro es indefinido o no. Si indefinido, significa que es una nueva publicación, de lo contrario, debes llamar al método de actualización. Aquí es lo que el addPost El método API se ve así:

app.post ('/ addpost', function (req, res) var title = req.body.title; var subject = req.body.subject; var id = req.body.id; if (id == "| | id == no definido) post.addPost (título, tema, función (resultado) res.send (resultado);); else post.updatePost (id, título, tema, función (resultado) res.send (resultado););)

Dentro de post.js archivo, crea un método llamado updatePost para actualizar los detalles de la publicación del blog. Harás uso de la updateOne API para actualizar los detalles de la publicación del blog con el particular carné de identidad. Aquí es cómo el updatePost método se ve:

updatePost: function (id, title, subject, callback) MongoClient.connect (url, function (err, db) db.collection ('post'). updateOne ("_id": new mongodb.ObjectID (id) , $ set: "title": title, "subject": subject, function (err, result) assert.equal (err, null); if (err == null) callback (true) else devolución de llamada (falso));); 

Guarde los cambios anteriores y reinicie el servidor. Inicie sesión en la aplicación y haga clic en el icono de edición. Modifique los valores existentes y haga clic en el botón para actualizar los detalles.. 

Implementación de la función Eliminar publicación

Para implementar la funcionalidad de eliminar publicaciones, debe adjuntar el evento de clic al icono de eliminar. Modifique el intervalo del icono de eliminar como se muestra:

Como se ve en el código anterior, ha pasado el ID de la publicación como un parámetro a la Eliminar mensaje método. 

Crea un método llamado Eliminar mensaje dentro de ShowPost componente.

deletePost (id) 

Unir el método en el ShowPost constructor de componentes.

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

Para usar esta dentro de mapa Función de devolución de llamada, es necesario vincular esta al mapa función. Modificar el mapa función de devolución de llamada como se muestra:

 this.state.posts.map (function (post, index) return  index + 1 título de la entrada post.subject         .bind (esto)) 

Dentro de Eliminar mensaje Método, agregue un mensaje de confirmación antes de llamar a la API de eliminación.

deletePost (id) if (confirm ('¿Estás seguro?')) // Delete Post API call estará aquí! 

Ahora vamos a añadir el Eliminar mensaje API dentro de la app.js expediente. La API leerá el ID de la publicación de la llamada AJAX y eliminará la entrada de MongoDB. Aquí es cómo el Eliminar mensaje API se ve:

app.post ('/ deletePost', function (req, res) var id = req.body.id; post.deletePost (id, function (result) res.send (result)))

Como se ve en el código anterior, hará una llamada al Eliminar mensaje método en el post.js Archivo y devolver el resultado. Vamos a crear el Eliminar mensaje metodo dentro del post.js expediente.

deletePost: function (id, callback) MongoClient.connect (url, function (err, db) db.collection ('post'). deleteOne (_id: new mongodb.ObjectID (id), function (err, resultado ) assert.equal (err, null); console.log ("Se eliminó la publicación."); if (err == null) callback (true) else callback (false));)

Como se ve en el código anterior, el Eliminar mensaje método en el post.js archivo hará uso de la MongoClient para conectarse a la base de datos del blog en MongoDB. Utilizando la Carné de identidad Pasado de la llamada AJAX, eliminará la publicación de la base de datos. 

Actualice el código dentro del Eliminar mensaje método en el home.jsx archivo para incluir la llamada AJAX a la Eliminar mensaje API en el app.js expediente.

deletePost (id) if (confirm ('¿Estás seguro?')) var self = this; axios.post ('/ deletePost', id: id) .then (function (response) ) .catch (function (error) ); 

Una vez que se haya eliminado la publicación del blog, debe actualizar la lista de publicaciones del blog para reflejar esto. Así que crea un nuevo método llamado getPost y mover el componentDidMount Código dentro de esa función. Aquí está el getPost método:

getPost () var self = this; axios.post ('/ getPost', ) .then (function (response) console.log ('res is', response); self.setState (posts: response.data)) .catch (function (error) console.log ('error is', error);); 

Modificar el componentDidMount código como se muestra:

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

Dentro de Eliminar mensaje Devolución de llamada AJAX llamada exitosa, hacer una llamada a la getPost Método para actualizar la lista de entradas del blog..

deletePost (id) if (confirm ('¿Estás seguro?')) var self = this; axios.post ('/ deletePost', id: id) .then (function (response) self.getPost ();) .catch (function (error) console.log ('Error is', error) ;); 

Guarde los cambios anteriores y reinicie el servidor. Intente agregar una nueva entrada de blog y luego haga clic en eliminar de la lista de cuadrículas. Se le pedirá un mensaje de confirmación de eliminación. Una vez que haga clic en el DE ACUERDO botón, la entrada se eliminará y la lista de publicaciones del blog se actualizará.

Envolviendolo

En este tutorial, vio cómo implementar la funcionalidad de eliminar y actualizar publicaciones de blog en la aplicación React blog. En la siguiente parte de la serie de tutoriales, aprenderá cómo implementar la página de perfil para un usuario que ha iniciado sesión.

Háganos saber sus opiniones y sugerencias en los comentarios a continuación. El código fuente de este tutorial está disponible en GitHub.