Fundamentos de JSX
Entendiendo la sintaxis JSX y como combina HTML con JavaScript
Que es JSX?
JSX (JavaScript XML) es una extension de sintaxis para JavaScript que se parece a HTML. Te permite escribir codigo de UI que es intuitivo y legible. JSX no es JavaScript valido—se transforma en llamadas de funciones JavaScript regulares por un compilador como Babel.
JSX vs HTML
JSX se parece a HTML pero tiene algunas diferencias clave. En realidad esta mas cerca de JavaScript, lo que significa que puedes incrustar expresiones y usar logica JavaScript directamente en tu marcado.
Sintaxis Basica de JSX
// Elemento JSX
const elemento = <h1>Hola, Mundo!</h1>;
// JSX con multiples elementos (debe tener un padre)
const tarjeta = (
<div>
<h2>Titulo</h2>
<p>Contenido aqui</p>
</div>
);
// Usando Fragment para evitar divs extra
const lista = (
<>
<li>Item 1</li>
<li>Item 2</li>
</>
);
Incrustando Expresiones JavaScript
Usa llaves {} para incrustar cualquier expresion JavaScript valida:
const nombre = "Maria";
const edad = 25;
function Saludo() {
return (
<div>
<h1>Hola, {nombre}!</h1>
<p>Tienes {edad} anios.</p>
<p>El proximo anio tendras {edad + 1}.</p>
<p>Fecha actual: {new Date().toLocaleDateString()}</p>
</div>
);
}
Diferencias Clave con HTML
| HTML | JSX | Razon |
|---|---|---|
class |
className |
class es palabra reservada en JS |
for |
htmlFor |
for es palabra reservada en JS |
onclick |
onClick |
camelCase para eventos |
style="color: red" |
style={{color: 'red'}} |
style acepta un objeto |
Estilos en Linea en JSX
function ComponenteEstilizado() {
const estilos = {
backgroundColor: 'azul',
color: 'blanco',
padding: '20px',
borderRadius: '8px'
};
return (
<div style={estilos}>
<p style={{ fontSize: '18px', fontWeight: 'bold' }}>
Texto estilizado
</p>
</div>
);
}
Renderizado Condicional en JSX
function Saludo({ estaLogueado }) {
return (
<div>
{/* Usando operador ternario */}
{estaLogueado ? <h1>Bienvenido de vuelta!</h1> : <h1>Por favor inicia sesion</h1>}
{/* Usando && para renderizado condicional */}
{estaLogueado && <button>Cerrar Sesion</button>}
</div>
);
}
Errores Comunes de JSX
- Olvidar cerrar etiquetas: Todas las etiquetas deben cerrarse, incluyendo
<img />,<input /> - Multiples elementos raiz: Envuelve multiples elementos en un padre o usa Fragments
- Usar class en vez de className: Recuerda que JSX usa convenciones JavaScript