Cómo integrar Material UI Data Grid en React con REST API

Go to Homepage

Descubrimos los beneficios del uso de Material UI Data Grid en React

Al comenzar mi búsqueda para mejorar el desarrollo web front-end, me topé con Material UI Data Grid. Al principio, no estaba muy seguro de qué era y cómo podía integrarlo en React con REST API, pero después de investigar un poco, descubrí sus beneficios.

Material UI Data Grid es una librería de UI components que ofrece una variedad de opciones para la integración de grillas de datos en aplicaciones web. Se puede personalizar fácilmente el estilo utilizando el CSS, lo que facilita su incorporación en cualquier proyecto de desarrollo web.

Una de las principales ventajas de usar Material UI Data Grid en React es que su estructura modular permite una fácil implementación. Una vez que se integra en el proyecto, no es necesario escribir muchísimo código para hacerla funcionar. Además, se pueden utilizar diferentes API’s, lo que simplifica el proceso de integración con servicios externos.

En cuanto a su funcionalidad, Material UI Data Grid ofrece una amplia gama de opciones, como agregar paginación, ordenar columnas y filtros de búsqueda en la grilla de datos. Todo esto se logra utilizando sencillas propiedades de React.

Al integrarlo con REST API, se puede cargar la información de la base de datos en la grilla de Material UI Data Grid. Podemos utilizar algunas de las librerías más comunes en React, como Axios, para hacer solicitudes HTTP a un servidor backend y obtener los datos. Algunos desarrolladores también optan por implementar GraphQL para interactuar con los datos del servidor.

El uso de Material UI Data Grid en React con REST API puede generar enormes mejoras en el flujo de trabajo del desarrollo web front-end. Con la integración de esta librería de UI components, se puede mejorar la presentación de datos, agregar una fácil navegación y explorar diferentes opciones de funcionalidades. Con tiempos de carga rápidos y una buena experiencia de usuario, Material UI Data Grid es una opción excelente para los proyectos de React que necesiten grillas de datos de gran calidad.

Para instalar Axios en nuestra aplicación de React, podemos ejecutar npm install axios desde la terminal.

Ejemplo de código de bloque:

import { DataGrid } from "@material-ui/data-grid";
import axios from "axios";

function MyGrid() {
    const [rows, setRows] = useState([]);

    useEffect(() => {
        axios
            .get("https://myserver.com/mydata")
            .then((response) => setRows(response.data))
            .catch((error) => console.log(error));
    }, []);

    return (
        <div style={{ height: 400, width: "100%" }}>
            <DataGrid rows={rows} columns={columns} pageSize={5} />
        </div>
    );
}

Este es un ejemplo básico de cómo podemos obtener datos utilizando Axios y luego cargarlos en el DataGrid de Material UI.

Construimos un servidor RESTful con Node.js para nuestro proyecto

En el desarrollo web actual, es común utilizar UI components listos para usar en lugar de crearlos desde cero. Aquí es donde entra Material UI Data Grid, un componente fácil de usar y altamente personalizable que ofrece una experiencia de usuario excelente. Pero para integrar este componente en una aplicación de React, necesitamos una fuente de datos. Aquí es donde entra REST API.

Para nuestro proyecto, decidimos construir un servidor RESTful con Node.js. Esto no solo nos proporcionará una fuente de datos para nuestro componente Data Grid de Material UI, sino que también es una excelente manera de aprender cómo funciona REST.

Primero, creamos un archivo server.js y comenzamos instalando las dependencias necesarias:

npm install express cors body-parser mongodb

Luego creamos nuestra instancia de Express y configuramos las rutas y la conexión a la base de datos. Aquí hay un ejemplo de cómo creamos una ruta para obtener todos los elementos de una colección de MongoDB:

const express = require("express");
const MongoClient = require("mongodb").MongoClient;
const cors = require("cors");
const bodyParser = require("body-parser");

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());

const port = process.env.PORT || 8000;
const dbUrl = "mongodb://localhost:27017/myDatabase";

MongoClient.connect(dbUrl, (err, db) => {
    if (err) throw err;

    app.get("/myCollection", (req, res) => {
        db.collection("myCollection")
            .find()
            .toArray((err, result) => {
                if (err) throw err;
                res.send(result);
            });
    });

    app.listen(port, () => {
        console.log(`listening on port ${port}`);
    });
});

En este código, primero configuramos el body-parser y cors, luego especificamos la port y dbUrl. “myDatabase” es el nombre de nuestra base de datos y “myCollection” es el nombre de nuestra colección.

Luego, nos conectamos a la base de datos con MongoClient.connect() y creamos una ruta para obtener todos los elementos de “myCollection” y devolverlos como respuesta en formato JSON con res.send().

Finalmente, iniciamos nuestro servidor Express con app.listen(). Ahora tenemos un servidor RESTful que podemos utilizar en nuestra aplicación de React.

Construir un servidor RESTful con Node.js puede parecer abrumador al principio, pero es una herramienta poderosa que puede mejorar significativamente la experiencia del usuario en nuestra aplicación web de React. Al integrar Material UI Data Grid y REST API, podemos proporcionar una interfaz de usuario sólida y eficiente para nuestros usuarios y ahorrar tiempo valioso en el desarrollo de front-end.

Implementamos la lógica de paginación y ordenamiento en nuestro Data Grid

En la integración de Material UI Data Grid en React con REST API, implementar la lógica de paginación y ordenamiento es esencial para ofrecer al usuario una experiencia amigable. Para lograrlo, tomamos en consideración el front-end y back-end de desarrollo web.

Para el front-end, utilizamos los UI components proporcionados por Material UI Data Grid y los integramos en nuestra aplicación de React. Primero, creamos un estado para nuestra página actual y otra para la cantidad de filas que deseamos mostrar. A continuación, implementamos una función que se llame cada vez que el usuario cambie de página o modifique la cantidad de filas a mostrar.

La función debe enviar una solicitud a nuestro servidor REST API con los parámetros de paginación y ordenamiento. Una vez que recibimos la respuesta, actualizamos nuestro estado local del Data Grid con los datos recibidos. Si deseamos ordenarlos, debemos enviar un objeto de configuración que incluya la columna por la que se debe ordenar y la dirección de ordenamiento (ascendente o descendente).

Para implementar la lógica de paginación, podemos usar el paginador proporcionado por Material UI Data Grid o crear nuestro propio componente personalizado. Si optamos por la segunda opción, debemos asegurarnos de enviar las solicitudes adecuadas a nuestro servidor REST API.

En cuanto al back-end, debemos diseñar nuestro API para que acepte solicitudes de paginación y ordenamiento. Podemos hacer esto utilizando bibliotecas de terceros como Express.js o escribiendo nuestro propio middleware.

Un ejemplo de middleware que maneja solicitudes de paginación se vería así en Express.js:

function paginateResults(req, res, next) {
    const { pageNum, pageSize } = req.query;
    const start = (pageNum - 1) * pageSize;
    const end = pageNum * pageSize;

    // Realizamos la consulta determinando el inicio y fin de la pagina
    MyModel.find()
        .skip(start)
        .limit(end - start)
        .exec()
        .then((results) => {
            res.paginatedResults = results;
            next();
        })
        .catch((err) => {
            console.error(err);
            res.status(500).send("Error de servidor");
        });
}

Implementar la lógica de paginación y ordenamiento en nuestro Data Grid es fundamental para brindar una experiencia de usuario satisfactoria. La integración de Material UI Data Grid en React con REST API requiere coordinación y colaboración entre el front-end y back-end de desarrollo web para crear interfaces modernas y eficientes.

Exploramos la funcionalidad de edición en tiempo real de Material UI Data Grid

En el desarrollo web, uno de los mayores desafíos es crear una interfaz de usuario (UI) que cumpla con las expectativas de los usuarios. Para hacerlo más fácil, existen muchos sistemas de diseño con UI components, como Material UI. Y, para la interacción con los usuarios, muchas aplicaciones necesitan una tabla que pueda ordenarse, filtrarse y paginarse, además de permitir la edición en tiempo real de los datos.

Para solucionar esto, Material UI ha creado el componente Data Grid, con el cual puedes crear tablas con todas las funcionalidades mencionadas. Además, puedes integrarla fácilmente en tu aplicación React con REST API.

Una de las funcionalidades más importantes en una tabla es la edición en tiempo real. En la Data Grid, esto se logra mediante la propiedad editMode. Puede ser cell para editar celdas individuales o row para editar toda una fila.

Para habilitar la edición en la Data Grid, primero debemos decirle al componente que es editable agregando editable="true" a las propiedades. Luego, en cada columna, debemos agregar la propiedad editCellProps, como se ve en el siguiente ejemplo:

columns={[
  { field: 'id', headerName: 'ID', width: 70 },
  {
    field: 'firstName',
    headerName: 'First name',
    width: 130,
    editable: true,
    editCellProps: {
      onBlur: handleEditFieldChange,
    }
  },
  // ...
]}

En este ejemplo, cada vez que se termina de editar una celda, se llama a la función handleEditFieldChange. En esta función, podremos realizar cualquier acción que necesitemos, como enviar los cambios a la REST API.

Otra propiedad interesante es editRowsModel, que nos permite controlar la fila actualmente editada. Así, podemos asegurarnos de que solo una fila esté siendo editada al mismo tiempo. Para utilizarla, debemos agregar la propiedad rows={data} al componente, donde data contiene todos los datos que serán mostrados.

const [editRowsModel, setEditRowsModel] = React.useState({});

function handleEditRowModelChange(model) {
    setEditRowsModel(model);
}

return (
    <div style={{ height: 400, width: "100%" }}>
        <DataGrid
            rows={data}
            columns={columns}
            editMode="row"
            onEditRowModelChange={handleEditRowModelChange}
            editRowsModel={editRowsModel}
        />
    </div>
);

Con onEditRowModelChange, cuando el usuario comienza a editar una fila, podemos guardar el modelo actual en el estado editRowsModel. De esta manera, cuando se termine la edición, se puede llamar a la REST API para actualizar los datos modificados para esa fila.

Gracias a la integración fácil de Material UI Data Grid con React y REST API, podemos crear una tabla con posibilidad de edición en tiempo real de manera rápida y eficiente. Con las propiedades editCellProps y editRowsModel, podemos controlar fácilmente la edición de los datos y enviarlos a la REST API adecuada.

Mejoramos la UX de nuestra aplicación utilizando filtros y selecciones en nuestro Data Grid

En el desarrollo web, la experiencia de usuario (UX) es uno de los aspectos más importantes a tener en cuenta. En nuestro artículo anterior, aprendimos a integrar Material UI Data Grid en React con REST API, lo que mejoró enormemente la capacidad de nuestro front-end. Y en esta sección, nos enfocaremos en cómo podemos utilizar filtros y selecciones en nuestro Data Grid para mejorar aún más la UX de nuestra aplicación.

Uno de los componentes UI más utilizados en una aplicación de gestión de datos es un filtro. Un filtro es una herramienta que permite a los usuarios filtrar los datos según sus necesidades, lo que los ayuda a encontrar la información relevante de una manera más rápida y fácil.

En el caso de nuestro Data Grid, podemos usar filtros para restringir los datos mostrados a los usuarios. En nuestro código, podemos agregar un campo de texto en el que el usuario puede ingresar sus términos de búsqueda. Luego, podemos utilizar los métodos de filtrado de Data Grid para mostrar los datos que coinciden con su búsqueda. Así, el usuario podrá ver solo los datos relevantes para él.

Otro componente UI muy utilizado en las aplicaciones de gestión de datos es una selección. Una selección es una herramienta que permite a los usuarios seleccionar los datos según sus necesidades, lo que les ayuda a realizar una acción específica en los datos seleccionados.

En nuestro Data Grid, podemos agregar una columna de selección en la que el usuario pueda seleccionar los datos relevantes para sus necesidades. Luego, podemos utilizar los métodos de selección de Data Grid para realizar una acción en los datos seleccionados. Por ejemplo, si el usuario selecciona varios elementos, podemos permitirle borrarlos de una sola vez.

Aquí hay un ejemplo de cómo podríamos agregar un filtro y una selección en nuestro Data Grid:

import { DataGrid, GridToolbar } from "@material-ui/data-grid";
import { useState } from "react";

function CustomToolbar(props) {
    const [searchTerm, setSearchTerm] = useState("");

    const handleSearch = (e) => {
        setSearchTerm(e.target.value);
    };

    const handleDelete = () => {
        const selectedIDs = props.selectionModel;
        // Delete the selected rows using REST API
    };

    return (
        <GridToolbar>
            <input type="text" onChange={handleSearch} />
            <button onClick={handleDelete}>Delete Selected</button>
        </GridToolbar>
    );
}

function App() {
    const [selectionModel, setSelectionModel] = useState([]);

    return (
        <div style={{ height: 400, width: "100%" }}>
            <DataGrid
                columns={columns}
                rows={rows}
                checkboxSelection
                onSelectionModelChange={(newSelection) => {
                    setSelectionModel(newSelection);
                }}
                selectionModel={selectionModel}
                components={{
                    Toolbar: CustomToolbar,
                }}
            />
        </div>
    );
}

Como se muestra en el ejemplo anterior, podemos personalizar la barra de herramientas del Data Grid para agregar un campo de búsqueda y un botón de eliminación. Además, podemos permitir al usuario seleccionar filas y realizar una acción en los datos seleccionados.

En conclusion, agregar filtros y selecciones en nuestro Data Grid puede mejorar significativamente la UX de nuestra aplicación, facilitando a los usuarios encontrar y acceder a los datos relevantes con mayor facilidad. Con la ayuda de Material UI Data Grid, podemos agregar estos componentes UI en nuestro front-end de una manera simple y efectiva.

Otros Artículos