javascript - Qual é o propósito das chaves duplas na sintaxe JSX do React?
No tutorial de React.js vemos este uso de chaves duplas:
<span dangerouslySetInnerHTML={{ __html: rawMarkup }} />
E então, no segundo tutorial, "Pensando em React":
<span style={{ color: 'red' }}>
{this.props.product.name}
</span>;
No entanto, a documentação do React JSX não descreve nem menciona chaves duplas. Para que serve essa sintaxe (chaves duplas)? E existe outra forma de expressar a mesma coisa em JSX ou isso é apenas uma omissão da documentação?
Resposta #1
É apenas um literal de objeto embutido no valor da propriedade. É o mesmo que
var obj = {__html: rawMarkup};
<span dangerouslySetInnerHTML={obj} />
Resposta #2
As chaves têm 2 usos aqui:-
- { .. } avalia para uma expressão em JSX.
- { key: value } implica um objeto javascript.
Vamos ver um exemplo simples.
<Image source={pic} style={{width: 193}}/>Se você observar, pic está cercado por chaves. Essa é a forma do JSX de inserir variáveis. pic pode ser qualquer expressão/variável/objeto do Javascript. Você também pode fazer algo como { 2+3 } e ele será avaliado como { 5 }
Vamos dissecar o estilo aqui. {width: 193} é um objeto Javascript. E para incorporar este objeto em JSX você precisa de chaves, portanto, { {width: 193} }
Nota: Para incorporar qualquer tipo de expressão/variável/objeto JavaScript em JSX, você precisa de chaves.
Resposta #3
A sintaxe de {{color: 'red'}} é usada na tag style porque, de acordo com a documentação do React, o atributo style aceita um objeto JavaScript com propriedades em camelCase em vez de uma string CSS.
<span style={{color: 'red'}}>
{this.props.product.name}
</span>;
