JSX (JavaScript XML) es una extensión de sintaxis para JavaScript que se utiliza en React para escribir elementos de la interfaz de usuario de una manera que se asemeja al HTML. Es una combinación de JavaScript y HTML-like syntax que hace más intuitivo el desarrollo de componentes en React.
Aunque parece HTML, en realidad JSX se compila a llamadas de JavaScript a la función React.createElement()
, lo que permite crear interfaces de usuario de forma declarativa. Esto facilita el trabajo con la estructura de componentes y hace que el código sea más legible y mantenible.
JSX permite escribir código como este dentro de los componentes de React:
const element = <h1>Hola, Mundo</h1>;
Internamente, este código JSX se transforma en algo como esto:
const element = React.createElement('h1', null, 'Hola, Mundo');
JSX puede incluir variables, expresiones JavaScript y condicionales, lo que hace que sea muy poderoso y flexible. Por ejemplo, puedes incrustar expresiones JavaScript dentro de JSX utilizando llaves {}
:
const name = 'Juan';
const element = <h1>Hola, {name}</h1>;
El uso de JSX mejora la experiencia del desarrollador, ya que no es necesario separar la lógica de la representación visual, lo que facilita la creación y el mantenimiento de la interfaz de usuario.
1. Sintaxis declarativa: JSX permite definir de forma clara qué interfaz de usuario se debe renderizar basándose en el estado actual del componente.
2. Mejora la legibilidad: Combinar JavaScript con una sintaxis parecida a HTML hace que el código sea más fácil de leer y entender, especialmente para desarrolladores familiarizados con HTML.
3. Integración con JavaScript: Permite utilizar toda la potencia de JavaScript dentro de las vistas, lo que lo hace flexible y dinámico.
4. Compilación eficiente: JSX se transpila a JavaScript puro, lo que garantiza un rendimiento óptimo en el navegador.
function Saludo(props) {
return <h1>Hola, {props.nombre}</h1>;
}
const elemento = <Saludo nombre="Carlos" />;
ReactDOM.render(
elemento,
document.getElementById('root')
);
En este ejemplo, el componente Saludo
recibe una propiedad (props.nombre
) y muestra un saludo personalizado utilizando JSX. Luego, este componente se renderiza en el DOM.
1. Un solo elemento contenedor: JSX debe devolver un único elemento contenedor. Si deseas retornar múltiples elementos, es necesario envolverlos en un contenedor como un <div>
o un <>
(fragmento vacío).
return (
<>
<h1>Título</h1>
<p>Este es un párrafo.</p>
</>
);
2. Atributos en camelCase: A diferencia de HTML, los atributos de JSX siguen la convención de camelCase. Por ejemplo, class
se convierte en className
y onclick
en onClick
.
<button className="boton" onClick={handleClick}>Haz clic aquí</button>
3. Expresiones en llaves: Para usar expresiones JavaScript dentro de JSX, se deben envolver en llaves {}
.
const elemento = <p>{2 + 2}</p>;
Aunque JSX se parece mucho a HTML, hay algunas diferencias clave:
className
en lugar de class
y htmlFor
en lugar de for
.
<img />
, <input />
, <br />
, etc.
Para más información sobre JSX, puedes consultar la documentación oficial de React: React JSX Docs.
Jorge García
Fullstack developer