Renderizado Condicional
Renderizar diferentes UI segun condiciones
Renderizado Condicional
En React, puedes crear distintas UI dependiendo de condiciones. Hay varias formas de renderizar condicionalmente en JSX.
Usando if/else
function Saludo({ estaLogueado }) {
if (estaLogueado) {
return <h1>Bienvenido de vuelta!</h1>;
}
return <h1>Por favor inicia sesion.</h1>;
}
// Con retorno anticipado
function Dashboard({ usuario }) {
if (!usuario) {
return <p>Cargando...</p>;
}
return (
<div>
<h1>Hola, {usuario.nombre}</h1>
{/* ... resto del dashboard */}
</div>
);
}
Operador Ternario
function Saludo({ estaLogueado }) {
return (
<div>
{estaLogueado
? <h1>Bienvenido de vuelta!</h1>
: <h1>Por favor inicia sesion.</h1>
}
</div>
);
}
// Para atributos
function Boton({ esPrimario }) {
return (
<button className={esPrimario ? 'btn-primario' : 'btn-secundario'}>
Click
</button>
);
}
Operador AND (&&)
function Notificaciones({ mensajes }) {
return (
<div>
<h1>Panel</h1>
{mensajes.length > 0 && (
<p>Tienes {mensajes.length} mensajes sin leer.</p>
)}
</div>
);
}
// Cuidado con 0 - usa comparacion explicita
function Lista({ items }) {
return (
<div>
{items.length > 0 && <ul>...</ul>}
{/* No usar: items.length && ... (mostraria 0) */}
</div>
);
}
Renderizado con Switch
function EstadoPedido({ estado }) {
const renderEstado = () => {
switch (estado) {
case 'pendiente':
return <span className="amarillo">Pendiente</span>;
case 'enviado':
return <span className="azul">Enviado</span>;
case 'entregado':
return <span className="verde">Entregado</span>;
case 'cancelado':
return <span className="rojo">Cancelado</span>;
default:
return <span>Desconocido</span>;
}
};
return <div>Estado: {renderEstado()}</div>;
}
Renderizado con Objetos
function Icono({ tipo }) {
const iconos = {
exito: '✓',
error: '✗',
advertencia: '⚠',
info: 'ℹ'
};
return <span>{iconos[tipo] || iconos.info}</span>;
}
Cuando usar cada metodo
- if/else: Para logica compleja o retornos anticipados
- Ternario: Para elegir entre dos opciones
- &&: Para mostrar u ocultar un elemento
- Switch/Objeto: Para multiples condiciones