Skip to content

Latest commit

 

History

History
72 lines (46 loc) · 2.57 KB

File metadata and controls

72 lines (46 loc) · 2.57 KB

Introducción a JSX

JSX

const element = () => <h1>¡Hola Fictizia!</h1>

El código mostrado arriba, a simple vista, puede parecer raro. No es ni HTML, ni es un string es JSX. Básicamente es una extensión de la sintáxis de JavaScript y es la manera más como de desarrollar en React. No es obligatorio pero podríamos decir que todo el mundo que hace React utiliza JSX.

Esta idea de meter el HTML dentro de JavaScript es muy criticada pero se basa en el concepto de que la lógica de la interfaz de usuario esta intrínsecamente unida a la lógica de renderizado. De esta forma tenemos un componente que contiene en un solo fichero JavaScript el maquetado y la lógica.

Charla explicando el por qué de JSX en profundidad

Diferencias en cuanto al HTML clásico

Hay algunos atributos de las etiquetas HTML que cambian:

  • class: en React hay que escribir className
  • onclick: en React hay que escribir onClick
  • A los atributos se les puede pasar funciones, objetos, texto, expresiones...

Renderizando variables en JSX

En el siguiente ejemplo tenemos una variable llamada name la cual la usamos dentro de JSX envolviéndola entre llaves:

const name = 'Fictizia'
const element = () => <h1>¡Hola {name}!</h1>

No solo se pueden renderizar variables sino todo tipo de expresiones dentro de las llaves:

  • Funciones:
const getName = (user) => user.name
const element = () => <h1>¡Hola {getName()}!</h1>
  • Ternarias:
const age = 18
const element = () => <h1>¡Hola {age > 18 ? 'adulto' : 'joven'}!</h1>

Realmente JSX representa objetos de JavaSript pero Babel compila el JSX a una función de React llamada createElement().

const element = () => <h1>¡Hola Fictizia!</h1>

Sería igual a esto:

const element = React.createElement(
  'h1',
  null,
  '¡Hola Fictizia!'
);

Puedes comprobarlo visitando este link

Ejercicios:

  1. Entrar en BabelJS y probar a escribir un componente que tenga una clase llamada title. Revisar qué salida nos da BabelJS después del compilado.

<- Volver al índice