Keys and List: ¿Cómo manejar las listas y condicionales en React JS?

Inicioreact jsListas y condiciones en React
Keys and List: ¿Cómo manejar las listas y condicionales en React JS?

by Juan Carlos García

3-Mzo-2023

(2)

Suscribirme al canal:

Hola viajero, vamos avanzando con fuerza en este curso gratuito de React JS, hoy toca hablar de uno de los temas que estoy seguro será el que más vas a utilizar en proyectos reales y este tema son las Listas y Condiciones en React.

Espero que te este gustando este tutorial y que me ayudes a compartirlo en tus redes sociales para que llegue a colegas que deseen aprender React y no cuenten con la oportunidad de costear este tipo de cursos.

¡No te puedes perder las nuevas clases 🧐!

React JS

React JS

React.js: El mejor curso gratuito de React.js desde cero.

¿Que es React JSX?

¿Que es React JSX?

Guía para principiantes de React JSX: ¿Qué es React JSX? Introducción a React JSX

Componentes y propiedades

Componentes y propiedades

Components and Props React.js, Manejo de propiedades y componentes en React

State y Ciclo de vida en React

State y Ciclo de vida en React

State And Lifecycle: Comprendiendo el State y Ciclo de vida de los componentes en React.js

Refs React

Refs React

¿Qué son las React Refs y para que sirven? Uso de las Refs y manejo del DOM en React.js

Listas y condiciones en React

Listas y condiciones en React

Keys and List: ¿Cómo manejar las listas y condicionales en React JS?

Formularios en React

Formularios en React

Formularios en React: ¿Cómo manejar los formularios en React.js con input controlados y no controlados?

React develepor tools

React develepor tools

React Developer Tools: ¿Cómo analizar el comportamiento y estado de nuestros componentes en React.js?

API Context

API Context

API Context en React: ¿Cómo comunicar componentes mediante API Context en React.js?

Higher Order Component

Higher Order Component

HOC en React.js: ¿Cómo utilizar los High Order Component (HOC) ?

Children en React JS

Children en React JS

Children en React.js: Manejo avanzado de Children en React.js, composición de componentes.

PropTypes en React

PropTypes en React

PropType en React.js: ¿Cómo validar datos a través de PropType en React.js?

Hooks en React JS

Hooks en React JS

Master de Hooks en React JS: ¿Qué es un Hook en React.js? Tipos, funcionamiento y características.

Hook useState

Hook useState

useState: ¿Cómo utilizar el Hook useState en React.js?

Hook useEffect

Hook useEffect

Hook useEffect: ¿Qué es el Hook useEffect? ¿Cómo utilizarlo correctamente y qué reglas seguir?

Hook useContext

Hook useContext

¿Cómo utilizar el Hook useContext? Comunicación de componentes funcionales

Hook useReducer

Hook useReducer

¿Cómo utilizar el Hook useReducer en React.js?

React memo

React memo

Memorizar componentes a través de React.memo en React.js

Hook useCallback

Hook useCallback

Utilizando los Hooks useCallback y useMemo en React.js

¿Qué aprenderás de las listas?

  • Una forma simple de importar un archivo JSON en react.
  • Conocerás y aprenderás a extraer datos utilizando la función map.
  • Veremos como y por qué se deben agregar keys a los elementos extraídos de map.
  • Realizaremos un ejemplo de como utilizar las condicionales en React

Repositorio:

  • Puedes descargar el código de esta clase dando clic aquí "lists-and-keys".
  • O puedes clonar el repositorio y cambiar a la rama "lists-and-keys".

 

git clone https://github.com/EWebik/react-js.git
git checkout lists-and-keys

 

¿Qué son las listas en React JS?

Las listas hacen referencia a un arreglo de datos el cual puede ser:

  • Un arreglo de objetos
  • O pueden ser arreglos de datos simples, como caracteres, números, etc.

Y como toda lista en programación, React nos permite recorrerlas con la intención de extraer sus elementos y mostrarlos en la DOM.

 

¿Para que sirven las listas en React?

En esencia  sirven para agrupar datos u objetos que utilizaremos dentro de JSX para renderear elementos en la DOM de nuestra página.

En muchos proyectos las utilizarás para cargar tus componentes, y un ejemplo claro de esto son las tablas, donde con una lista deberás cargar el contenido de un componente tipo tabla. Te invito a ver el vídeo para que comprendas y aprendas como hacer esto.

 

¿Cómo renderizar una colección de datos en React?

Para iterar una colección de datos, React nos proporciona el método map, el cual podemos utilizar perfectamente con la sintaxis JSX, por ejemplo:

class Componente extends React.Component{
  render(){
    return(
      <>
        <h2 className="centrar">{"Curso de React by EWebik Listas y condiciones"}</h2>
        <div className="cont-tabla">
          <table>
            <thead>
              <tr>
                <th>Nombre</th>
                <th>Categoría</th>
                <th>Precio</th>
                <th>Cantidad vendidos</th>
                <th>En almacen</th>
                <th>Fecha</th>
              </tr>
            </thead>
            <tbody>
              {
                datos.map((dato,index)=>
                  <tr
                    key={dato.id}
                    className={index%2 == 0 ? '':'trColor'}>
                    <td>{dato.nombre}</td>
                    <td>{dato.categoria}</td>
                    <td>{dato.precio}</td>
                    <td>{dato.cantidad_vendidos}</td>
                    <td>{dato.en_almacen}</td>
                    <td>{dato.fecha_alta}</td>
                  </tr>
                )
              }
            </tbody>
          </table>
        </div>
      </>
    );
  }
}

 

En el código anterior tenemos una tabla que tiene 6 columnas y para poder poblarla de datos usamos map.

<tbody>
         {
                datos.map((dato,index)=>
                  <tr
                    key={dato.id}
                    className={index%2 == 0 ? '':'trColor'}>
                    <td>{dato.nombre}</td>
                    <td>{dato.categoria}</td>
                    <td>{dato.precio}</td>
                    <td>{dato.cantidad_vendidos}</td>
                    <td>{dato.en_almacen}</td>
                    <td>{dato.fecha_alta}</td>
                  </tr>
                )
        }
</tbody>

Para extraer los datos, map es una función que regresa dos parámetros el "dato" el cual es el elemento o dato que extraemos del array y un "index" o indice, el cual es el indice de la posición del elemento extraído dentro del arreglo.

 

Condicionales en React

En efecto, dentro de este mismo código hacemos uso de condicionales es bastante simple ya que con una condicionar podemos elegir si se muestra un elemento, un componente o prácticamente cualquier cosa valida dentro de JSX.

En este caso lo que vamos hacer es utilizar una condición para agregar la clase trColor en el tag TR el cual sirve para crear una fila dentro de la estructura de una tabla.

 

className={index%2 == 0 ? '':'trColor'}

 

Si el módulo 2 del index es igual a cero no agregará ninguna clase de CSS, mientras que si es impar (módulo 2 diferente de cero) agregará la clase trColor pintando el fondo de un color diferente.

Entonces, nuestro componente tiene la siguiente salida en la DOM.

Ejemplo de listas en React JS

 

Keys en React

Cuando extraemos datos de un arreglo, al momento de hacer el render y montar los elementos en la DOM, React requiere que agreguemos un indice al elemento que envuelve todo lo que esta adentro del map.

Por ejemplo, en el código que hemos visto tenemos la propiedad key={} que agregamos al TR que envuelve las columnas de la tabla.

            <tbody>
              {
                datos.map((dato,index)=>
                  <tr
                    key={dato.id}
                    className={index%2 == 0 ? '':'trColor'}>
                    <td>{dato.nombre}</td>
                    ...
                    <td>{dato.fecha_alta}</td>
                  </tr>
                )
              }
            </tbody>

 

Bien, React indica en la documentación que la mejor practica es pasarle al atributo Key un dato único, el cual puede ser un id personalizado que tengamos en nuestros datos, en este caso al JSON de prueba le he agregado un id el cual es simplemente un autoincremental.

key={dato.id}

Por otra parte, si no contamos con un indice personalizado podemos pasarle el index que viene de map, y funcionara sin problema.

No obstante no es lo mejor, ya que si los elementos cambian en tiempo de ejecución, el orden de los indices cambiarán también, lo que provocará un impacto negativo de rendimiento.

Espero que este capítulo haya despejado dudas y hayas aprendido como manejar las listas, condiciones y keys en React, recuerda compartir en redes sociales para ayudar a más personas.

Juan Carlos

Juan Carlos García

Desarrollador de software / SEO

Durante años he desarrollado plataformas dedicadas al rastreo satelital y varios sitios web que se encuentran en la primera página de Google, y hoy quiero compartir contigo lo que se en tecnologías como: Node JS, PHP, C# y Bases de datos.

Si quieres apoyarme sígueme en mis redes sociales y suscríbete a mi canal de YouTube.

EWebik

Diseño de páginas web y aplicaciones moviles.

© 2024 EWebik