En el tutorial de react.js vemos este uso de llaves dobles:
<span dangerouslySetInnerHTML={{ __html: rawMarkup }} />
Y luego, en el segundo tutorial, "Pensando en reaccionar" :
<span style={{ color: 'red' }}>
{this.props.product.name}
</span>;
Sin embargo, la documentación de React JSX no describe ni menciona llaves dobles. ¿Para qué es esta sintaxis (doble curlies)? ¿Y hay otra forma de expresar lo mismo en jsx o es solo una omisión de la documentación?
javascript
reactjs
Ben Roberts
fuente
fuente
The exterior set of curly braces are letting JSX know you want a JS expression. The interior set of curly braces represent a JavaScript object, meaning you’re passing in a object to the style attribute.
Respuestas:
Es solo un objeto literal en línea en el valor de prop. Es lo mismo que
fuente
dangerouslySetInnerHTML={__html: rawMarkup}
lugar dedangerouslySetInnerHTML={rawMarkup}
? ¿Es porque el objeto{__html: rawMarkup}
es mutable y una cadena no lo es?Los tirantes rizados tienen 2 usos aquí: -
Veamos un ejemplo sencillo.
<Image source={pic} style={{width: 193}}/>
Si observa
pic
está rodeado de tirantes. Esa es la forma JSX de incrustar la variable.pic
puede ser cualquier expresión / variable / objeto de Javascript. También puede hacer algo como {2 + 3} y se evaluará como {5}Analicemos el estilo aquí.
{width: 193}
es un objeto Javascript. Y para incrustar este objeto en JSX, necesita llaves, por lo tanto,{ {width: 193} }
fuente
En caso de que no lo supiera, ¿por qué
{{color: 'red'}}
se usa en lastyle
etiqueta?Según la documentación oficial de React , el atributo de estilo acepta un objeto JavaScript en lugar de una cadena CSS.
fuente
React usa JSX, en JSX cualquier variable, objeto de estado, expresión, etc. debe incluirse entre {}.
Al proporcionar estilos en línea en JSX, debe especificarse como un objeto, por lo que debe estar entre llaves nuevamente. {}.
Esta es la razón por la que hay dos pares de llaves
fuente
esto significa que en lugar de declarar una variable de estilo que se establece en un objeto de las propiedades de estilo deseadas, puede simplemente establecer las propiedades de estilo en un objeto ... esta es generalmente una mejor práctica cuando los estilos que desea agregar son pocos, sin embargo, para un elemento que necesita más estilo es más limpio declarar una variable de estilo
por ejemplo, para un elemento con menos propiedades de estilo, haga esto
para el elemento HTML con más propiedades de estilo, haga esto
luego lo llamas con sintaxis jsx
fuente
Intento decirlo en palabras sencillas para que sea comprensible para todos. El siguiente código:
<span dangerouslySetInnerHTML={{__html: rawMarkup}} />
es igual a
Entonces, simplemente deberíamos usar la expresión React si vamos a asignar un objeto literal a una propiedad.
Para algunas personas que se están moviendo principalmente de AngularJs a ReactJs, probablemente sea parte de la confusión con el operador de enlace de expresión de AngularJs {{}} . Por lo tanto, intente verlo de manera diferente en ReactJs.
fuente
Mi interpretación de las llaves dobles es que el objeto de estilo solo acepta un objeto de JavaScript, por lo que el objeto debe estar dentro de llaves simples.
El objeto para los artefactos de estilo es de pares clave: valor (diccionario frente a una matriz) y ese objeto se expresa como, por ejemplo,
{color:'#ffffff'}
,.Entonces tienes:
y
Al igual que en álgebra, cuando sustituye, se mantiene que:
fuente