ReactJS - JSX
React usa JSX para crear plantillas en lugar de JavaScript normal. No es necesario usarlo, sin embargo, a continuación se presentan algunas ventajas que lo acompañan.
Es más rápido porque realiza la optimización al compilar código en JavaScript.
También es de tipo seguro y la mayoría de los errores se pueden detectar durante la compilación.
Hace que sea más fácil y rápido escribir plantillas, si está familiarizado con HTML.
Usando JSX
JSX parece un HTML normal en la mayoría de los casos. Ya lo usamos en el capítulo Configuración del entorno. Mira el código deApp.jsx donde volvemos div.
App.jsx
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
Hello World!!!
</div>
);
}
}
export default App;
Aunque es similar a HTML, hay un par de cosas que debemos tener en cuenta al trabajar con JSX.
Elementos anidados
Si queremos devolver más elementos, debemos envolverlo con un elemento contenedor. Observe cómo estamos usandodiv como envoltorio para h1, h2 y p elementos.
App.jsx
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
<h1>Header</h1>
<h2>Content</h2>
<p>This is the content!!!</p>
</div>
);
}
}
export default App;
Atributos
Podemos utilizar nuestros propios atributos personalizados además de las propiedades y atributos HTML habituales. Cuando queremos agregar un atributo personalizado, necesitamos usardata-prefijo. En el siguiente ejemplo, agregamosdata-myattribute como un atributo de p elemento.
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
<h1>Header</h1>
<h2>Content</h2>
<p data-myattribute = "somevalue">This is the content!!!</p>
</div>
);
}
}
export default App;
Expresiones JavaScript
Las expresiones de JavaScript se pueden utilizar dentro de JSX. Solo necesitamos envolverlo con llaves.{}. El siguiente ejemplo representará2.
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
<h1>{1+1}</h1>
</div>
);
}
}
export default App;
No podemos usar if else declaraciones dentro de JSX, en su lugar podemos usar conditional (ternary)Expresiones En el siguiente ejemplo, variablei igual a 1 para que el navegador renderice true, Si lo cambiamos a algún otro valor, representará false.
import React from 'react';
class App extends React.Component {
render() {
var i = 1;
return (
<div>
<h1>{i == 1 ? 'True!' : 'False'}</h1>
</div>
);
}
}
export default App;
Estilismo
React recomienda usar estilos en línea. Cuando queremos establecer estilos en línea, necesitamos usarcamelCasesintaxis. React también se agregará automáticamentepxdespués del valor numérico en elementos específicos. El siguiente ejemplo muestra cómo agregarmyStyle en línea para h1 elemento.
import React from 'react';
class App extends React.Component {
render() {
var myStyle = {
fontSize: 100,
color: '#FF0000'
}
return (
<div>
<h1 style = {myStyle}>Header</h1>
</div>
);
}
}
export default App;
Comentarios
Al escribir comentarios, debemos poner paréntesis. {}cuando queremos escribir un comentario dentro de la sección de niños de una etiqueta. Es una buena práctica usar siempre{} al escribir comentarios, ya que queremos ser coherentes al escribir la aplicación.
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
<h1>Header</h1>
{//End of the line Comment...}
{/*Multi line comment...*/}
</div>
);
}
}
export default App;
Convenio de denominación
Las etiquetas HTML siempre usan lowercase nombres de etiquetas, mientras que los componentes de React comienzan con Uppercase.
Note - Deberías usar className y htmlFor como nombres de atributos XML en lugar de class y for.
Esto se explica en la página oficial de React como:
Dado que JSX es JavaScript, identificadores como class y forse desaconsejan como nombres de atributos XML. En cambio, los componentes de React DOM esperan nombres de propiedad DOM comoclassName y htmlFor, respectivamente.