๐Ÿ’ฃ3) Reemplazando createElement por JSX

Introducciรณn

JSX es el standard para escribir aplicaciones con react. Analicemos esta declaraciรณn de variable:

const element = <h1>Hello world!</h1>;

El contenido de la variable no es ni HTML ni es un String. Parece HTML pero realmente es una mezcla de JavaScript y HTML.

Se llama JSX y es una extensiรณn de JavaScript. Los creadores de react recomiendan usarlo para describir como deberรญa ser la UI de un componente. Es parecido a un lenguaje de template, con la ventaja de que puedes agregarle todo el JavaScript que quieras, sin limitaciones.

Todo lo que escribimos en JSX se transforma en un "element" cรณmo vimos en el capรญtulo anterior. Esta transformaciรณn la harรก con Babelarrow-up-right.

ยฟPor quรฉ JSX?

No se requiere realmente usar JSX mientras se trabaja con aplicaciones react. Puedes desarrollar tus aplicaciones con createElement cรณmo vimos en el capitulo anterior. Pero usar JSX tiene ventajas.

Quizรกs se hizo popular por su sintaxis familiar, es casi como escribir HTML. La lรณgica de nuestra UI sea muy descriptiva y fรกcil de entender.

Analicemos este componente:

with-jsx.js
<div>
  <img src={url} className='item-image' />
  <span className='item-description'>{title + description}</span>
</div>
without-jsx.js
React.createElement(
  'div',
  null,
  React.createElement('img', { src: url, className: 'item-image' }),
  React.createElement(
    'span',
    { className: 'item-description' },
    title + description
  )
);

Sin JSX no queda del todo claro que es lo que estรก sucediendo. Con JSX visualizamos rรกpidamente como serรก la UI y ademรกs entendemos rรกpido desde donde se cargarรก la data. Es fรกcil entender lo que pasarรก con ese componente.

Cรณmo mencionamos, es una mezcla de JavaScript y HTML y por eso podemos incrustar variables o incluso cรณdigo directamente en el template.

Reemplazando createElement por JSX

A continuaciรณn reemplazaremos el cรณdigo que hicimos en el capitulo anterior por JSX.

Cรณmo verรกs el cรณdigo es mucho mรกs lindo.

Ademรกs de incluir los scripts de React y React-Dom ahora agregamos Babelarrow-up-right. Babel transformarรก el cรณdigo JSX en el cรณdigo equivalente en react.

En nuestro ejemplo Babel transforma el cรณdigo JSX a lo siguiente:

Para ver como Babel transforma el JSX puedes utilizar esta consola.arrow-up-right

Contenido dinรกmico

Gracias a JSX y a su posibilidad de incrustar cรณdigo JavaScript dentro de los template, podemos generar contenidos dinรกmicos en base a datos, condiciones, etc. A continuaciรณn se muestran algunos ejemplos, mรกs adelante en el workshop profundizaremos.

  • Haciendo que el contenido del componente sea dinรกmico

  • Clases dinรกmicas

  • Pasรกndole propiedades

boom

Calma, mรกs adelante veremos que es eso de las props y cรณmo darle estilos a nuestros componentes.

Lo importante es que hayas entendido que es JSX y cรณmo funciona, para saber mรกs ingresa aquรญ:

Last updated