What do curly braces mean in JSX (React)?

JavascriptReactjsEcmascript 6Jsx

Javascript Problem Overview


For an example, to set a style in react you could do

var css = {color: red}

and

<h1 style={css}>Hello world</h1>

Why do you need the curly braces around css in the second code snippet?

Javascript Solutions


Solution 1 - Javascript

The curly braces are a special syntax to let the JSX parser know that it needs to interpret the contents in between them as JavaScript instead of a string.

You need them when you want to use a JavaScript expression like a variable or a reference inside JSX. Because if you use the standard double quote syntax like so:

var css = { color: red }

<h1 style="css">Hello world</h1>

JSX doesn't know you meant to use the variable css in the style attribute instead of the string. And by placing the curly braces around the variable css, you are telling the parser "take the contents of the variable css and put them here". (Technically its evaluating the content)

This process is generally referred to as "interpolation".

Solution 2 - Javascript

If you don't use the variable css, the JSX could look like this:

<h1 style={ {color: 'red'} }>Hello world</h1>

I guess you are confused about the double curly braces.

so you know that the curly braces in JSX means process the inner value in JavaScript, so the outer braces is used exactly for this purpose.

But the style property accepts an object. And an object also needs another pair of curly braces to wrap it up. That's the purpose for the inner ones.

Solution 3 - Javascript

You put curly braces when you want to use the value of a variable inside "html" (so inside the render part). It's just a way of telling the app to take the value of the variable and put it there, as opposed to a word.

Solution 4 - Javascript

The outer curly braces tell the JSX parser that the syntax should be interpreted as javascript. The inner braces are used because the style variable accepts an object.

let's break this down:

<h1 style={interpret javascritp {interpret the object} }> hello </h1>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionEverRipView Question on Stackoverflow
Solution 1 - JavascriptDaniel SandiegoView Answer on Stackoverflow
Solution 2 - JavascriptChangView Answer on Stackoverflow
Solution 3 - Javascriptadinutzyc21View Answer on Stackoverflow
Solution 4 - JavascriptMelanie H.View Answer on Stackoverflow