Curso react nivel medio
El renderizado condicional y el renderizado de listas son técnicas fundamentales en React que permiten mostrar elementos dinámicos y optimizar la interfaz según el estado de la aplicación o los datos disponibles.
1. Renderizado condicional
El renderizado condicional nos permite mostrar u ocultar componentes según se cumpla una condición. Esto se puede hacer utilizando if, operadores ternarios, o el operador &&.
-
Renderizado condicional con
if: Este método es útil si queremos devolver un componente onullpara no renderizar nada.1function Mensaje({ mostrar }) { 2 if (!mostrar) { 3 return null; // No se renderiza nada si mostrar es false 4 } 5 return <p>Este es un mensaje visible.</p>; 6} -
Renderizado condicional con el operador ternario: El operador ternario nos permite elegir entre dos componentes según se cumpla una condición.
1function Saludo({ esUsuario }) { 2 return ( 3 <div> 4 {esUsuario ? <p>Bienvenido, usuario.</p> : <p>Por favor, inicia sesión.</p>} 5 </div> 6 ); 7} -
Renderizado condicional con el operador
&&: Usamos&¶ renderizar un componente solo si la condición es verdadera.1function Notificacion({ hayNotificacion }) { 2 return ( 3 <div> 4 {hayNotificacion && <p>Tienes una nueva notificación.</p>} 5 </div> 6 ); 7}
En estos ejemplos:
ifdevuelvenullpara no renderizar nada si la condición no se cumple.- Operador ternario (
condicion ? casoVerdadero : casoFalso) permite elegir entre dos componentes. - Operador
&&muestra el componente solo si la condición estrue.
2. Renderizado de listas y keys
Para mostrar listas en React, usamos el método .map() que recorre un array y devuelve un componente para cada elemento. Es importante agregar una key única a cada elemento de la lista, ya que esto ayuda a React a identificar cambios y optimizar el renderizado.
Ejemplo de renderizado de listas con keys:
1const nombres = ["Ana", "Luis", "Carlos"]; 2 3function ListaDeNombres() { 4 return ( 5 <ul> 6 {nombres.map((nombre, index) => ( 7 <li key={index}>{nombre}</li> 8 ))} 9 </ul> 10 ); 11}
En este caso, cada <li> tiene una key (el index del elemento en el array). Aunque el índice del array se puede usar como key, es mejor usar un identificador único si el array cambia frecuentemente para evitar problemas de renderizado.
3. Ejercicio práctico: Mostrar/ocultar un mensaje y renderizado de lista de tareas
Vamos a crear una pequeña aplicación que:
- Muestra y oculta un mensaje con un botón.
- Muestra una lista de tareas, permitiendo agregar y eliminar tareas.
Código completo de la aplicación:
1import React, { useState } from 'react'; 2 3function App() { 4 const [mostrarMensaje, setMostrarMensaje] = useState(false); 5 const [tareas, setTareas] = useState([]); 6 const [nuevaTarea, setNuevaTarea] = useState(''); 7 8 // Función para alternar la visibilidad del mensaje 9 const toggleMensaje = () => { 10 setMostrarMensaje(!mostrarMensaje); 11 }; 12 13 // Función para agregar una nueva tarea 14 const agregarTarea = () => { 15 if (nuevaTarea.trim()) { 16 setTareas([...tareas, nuevaTarea.trim()]); 17 setNuevaTarea(''); 18 } 19 }; 20 21 // Función para eliminar una tarea por índice 22 const eliminarTarea = (index) => { 23 setTareas(tareas.filter((_, i) => i !== index)); 24 }; 25 26 return ( 27 <div style={{ textAlign: 'center' }}> 28 <h1>Aplicación de Lista de Tareas</h1> 29 30 {/* Mostrar/Ocultar mensaje */} 31 <button onClick={toggleMensaje}> 32 {mostrarMensaje ? 'Ocultar mensaje' : 'Mostrar mensaje'} 33 </button> 34 {mostrarMensaje && <p>Este es un mensaje que se puede ocultar.</p>} 35 36 {/* Input y botón para agregar tareas */} 37 <div style={{ marginTop: '20px' }}> 38 <input 39 type="text" 40 value={nuevaTarea} 41 onChange={(e) => setNuevaTarea(e.target.value)} 42 placeholder="Escribe una tarea" 43 /> 44 <button onClick={agregarTarea}>Agregar Tarea</button> 45 </div> 46 47 {/* Lista de tareas */} 48 <ul style={{ listStyle: 'none', padding: 0, marginTop: '20px' }}> 49 {tareas.map((tarea, index) => ( 50 <li key={index} style={{ marginBottom: '10px' }}> 51 {tarea} 52 <button 53 onClick={() => eliminarTarea(index)} 54 style={{ marginLeft: '10px' }} 55 > 56 Eliminar 57 </button> 58 </li> 59 ))} 60 </ul> 61 </div> 62 ); 63} 64 65export default App;
Explicación del código:
-
Mostrar/Ocultar Mensaje:
- Usamos el estado
mostrarMensajepara controlar si el mensaje es visible o no. - Al hacer clic en el botón, alternamos el estado
mostrarMensaje, mostrando o ocultando el mensaje con el operador&&.
- Usamos el estado
-
Agregar y Eliminar Tareas:
nuevaTareaguarda el valor del input.agregarTareaagrega el texto ingresado a la listatareascuando el usuario hace clic en el botón, siempre quenuevaTareano esté vacío.eliminarTareaelimina la tarea específica al hacer clic en su botón "Eliminar", usando el índice como referencia.
-
Renderizado de la Lista de Tareas:
- Usamos
.map()para recorrertareasy renderizar cada tarea como un elemento<li>. - Cada tarea tiene un botón de "Eliminar" que permite quitarla de la lista.
- Usamos
Este ejercicio cubre el renderizado condicional y el renderizado de listas en React, mostrando cómo se puede crear una interfaz dinámica y reactiva que responde a las acciones del usuario.
- Loading...