javascript - Vad är syftet med dubbla måsvingeparenteser i Reacts JSX-syntax?
Från react.js-handledningen ser vi denna användning av dubbla måsvingar:
<span dangerouslySetInnerHTML={{ __html: rawMarkup }} />
Och sedan i den andra handledningen, "Thinking in React":
<span style={{ color: 'red' }}>
{this.props.product.name}
</span>;
Men React JSX-dokumentationen beskriver eller nämner inte dubbla måsvingar. Vad är detta syntax (dubbla måsvingar) till för? Och finns det ett annat sätt att uttrycka samma sak i JSX eller är detta bara en utelämning från dokumentationen?
Svar #1
Det är bara ett objektbokstav inbäddat i prop-värdet. Det är samma som
var obj = {__html: rawMarkup};
<span dangerouslySetInnerHTML={obj} />
Svar #2
Klamrar har två användningar här:-
- { .. } utvärderas till ett uttryck i JSX.
- { key: value } innebär ett JavaScript-objekt.
Låt oss se ett enkelt exempel.
<Image source={pic} style={{width: 193}}/>Om du observerar är pic omgiven av klamrar. Det är JSX-sättet att bädda in en variabel. pic kan vara vilken JavaScript-uttryck/variabel/objekt som helst. Du kan också göra något som { 2+3 } och det kommer att utvärderas till { 5 }
Låt oss dissekera stil här. {width: 193} är ett Javascript-objekt. Och för att bädda in detta objekt i JSX behöver du måsvingar, alltså { {width: 193} }
Obs: För att bädda in någon typ av Javascript-uttryck/variabel/objekt i JSX behöver du måsvingar.
Svar #3
Syntaxen för {{color: 'red'}} används i style-taggen eftersom enligt React-dokumentationen accepterar style-attributet ett JavaScript-objekt med camelCase-egenskaper istället för en CSS-sträng.
<span style={{color: 'red'}}>
{this.props.product.name}
</span>;
