JSX is a syntax that looks like HTML but is used in React to describe what the UI should look like. It lets you write HTML-like code inside JavaScript.
Click to reveal answer
beginner
How do you embed JavaScript expressions inside JSX?
You put JavaScript expressions inside curly braces {} within JSX. For example: {2 + 2} will show 4.
Click to reveal answer
beginner
Why must JSX elements have one parent element?
JSX must return a single root element because React needs one element to represent the component. You can wrap multiple elements in a <div> or <React.Fragment>.
Click to reveal answer
beginner
How do you add CSS classes in JSX?
Use className instead of class because class is a reserved word in JavaScript. For example: <div className="box"></div>.
Click to reveal answer
beginner
What is the rule for self-closing tags in JSX?
All tags without children must be self-closed with a slash. For example, <img src="image.png" /> or <br />.
Click to reveal answer
Which of these is the correct way to write a JSX element with a JavaScript expression?
A<div>(5 + 5)</div>
B<div>{5 + 5}</div>
C<div>5 + 5</div>
D<div>${5 + 5}</div>
✗ Incorrect
JavaScript expressions must be inside curly braces {} in JSX.
What attribute do you use to add CSS classes in JSX?
AstyleClass
Bclass
CcssClass
DclassName
✗ Incorrect
JSX uses 'className' instead of 'class' because 'class' is a reserved word in JavaScript.
Which JSX snippet is valid?
A<div><p>Hello</p><p>World</p></div>
B<p>Hello</p><p>World</p>
C<div><p>Hello</p><p>World</p>
D<div><p>Hello</p></div><p>World</p>
✗ Incorrect
JSX must have one parent element wrapping all children.
How should you write a self-closing tag for an image in JSX?
A<img>
B<img></img>
C<img />
D<img/>
✗ Incorrect
Self-closing tags must include a slash before the closing angle bracket in JSX. Both and are valid.
Can you use statements like if or for directly inside JSX?
ANo, use JavaScript before JSX or use conditional expressions
BYes, directly inside JSX
CYes, but only if wrapped in curly braces
DNo, JSX does not support any JavaScript
✗ Incorrect
JSX supports expressions inside curly braces, but statements like if or for must be handled outside or with conditional expressions.
Explain the main rules you must follow when writing JSX syntax.
Think about how JSX mixes HTML and JavaScript and what special syntax it requires.
You got /5 concepts.
Describe how to include JavaScript logic like conditions or loops when using JSX.
Remember JSX allows expressions but not statements inside its syntax.
You got /4 concepts.
Practice
(1/5)
1. Which of the following is correct JSX syntax for embedding a JavaScript expression inside HTML?
<h1>Hello, {name}!</h1> correctly uses curly braces around the variable name. The other options use invalid syntax for embedding expressions.
Final Answer:
<h1>Hello, {name}!</h1> -> Option A
Quick Check:
Curly braces for JS expressions = <h1>Hello, {name}!</h1> [OK]
Hint: Use curly braces {} to embed JavaScript in JSX [OK]
Common Mistakes:
Using parentheses () instead of curly braces
Using $ sign like template strings inside JSX
Adding extra symbols like & before curly braces
2. Which JSX snippet is syntactically correct?
easy
A. <p>Hello<p>
B. <div><img src='logo.png'></div>
C. <input type='text' />
D. <br>
Solution
Step 1: Check self-closing tags in JSX
In JSX, tags like input, img, and br must be self-closed with a slash /.
Step 2: Validate each option
<input type='text' /> correctly self-closes input. <div><img src='logo.png'></div> misses self-closing on img. <p>Hello<p> has an unclosed p tag. <br> misses self-closing on br.
Final Answer:
<input type='text' /> -> Option C
Quick Check:
Self-close void tags with / = <input type='text' /> [OK]
Hint: Always self-close void tags like in JSX [OK]
Common Mistakes:
Forgetting the slash on self-closing tags
Leaving tags unclosed
Using HTML void tags without self-closing
3. What will this JSX code render?
const name = 'Alice';
const element = <div>Hello, {name.toUpperCase()}!</div>;
medium
A. <div>Hello, Alice!</div>
B. <div>Hello, ALICE!</div>
C. <div>Hello, {name.toUpperCase()}!</div>
D. SyntaxError
Solution
Step 1: Evaluate the JavaScript expression inside JSX
The expression {name.toUpperCase()} calls the toUpperCase() method on the string 'Alice', resulting in 'ALICE'.
Step 2: Understand JSX rendering
JSX replaces the expression with its evaluated result, so the rendered output is <div>Hello, ALICE!</div>.
A. JSX expressions cannot contain multiple <p> tags
B. JSX requires all tags to be self-closing
C. JSX does not allow text inside <p> tags
D. JSX must have only one parent element per block
Solution
Step 1: Analyze the JSX structure
The first element uses a single parent div wrapping two p tags, which is correct. The second snippet has two sibling p tags without a parent wrapper.
Step 2: Recall JSX rules about parent elements
JSX requires one parent element per block. Multiple sibling elements must be wrapped in a single parent or a fragment.
Final Answer:
JSX must have only one parent element per block -> Option D
Quick Check:
One parent element rule = JSX must have only one parent element per block [OK]
Hint: Wrap multiple JSX elements in one parent tag [OK]
Common Mistakes:
Leaving sibling JSX elements unwrapped
Thinking multiple root elements are allowed
Confusing self-closing tags with parent wrapping
5. You want to render a list of names inside a JSX component. Which snippet correctly uses JSX syntax to do this?
const names = ['Anna', 'Bob', 'Cara'];
A) <ul>{names.map(name => <li>{name}</li>)}</ul>
B) <ul>{names.forEach(name => <li>{name}</li>)}</ul>
C) <ul>{names.map(name => <li>name</li>)}</ul>
D) <ul>{names.map(name => <li>{name.toUpperCase()}</li>)}</ul>
hard
A. Correctly maps names to list items with JSX expressions
B. Uses forEach which returns undefined, so no list items render
C. Does not embed the variable, so 'name' is rendered literally
D. Maps names but transforms them to uppercase before rendering
Solution
Step 1: Understand how to render lists in JSX
Use map to transform array items into JSX elements. Each item must be embedded inside curly braces.
Step 2: Evaluate each option
The snippet {names.map(name => <li>{name}</li>)} correctly uses map and embeds {name}. The forEach snippet returns undefined, so no list items render. The snippet <li>name</li> renders the literal string 'name' because it lacks curly braces. The toUpperCase() snippet uses valid JSX syntax but transforms names to uppercase, which is not the original list.
Final Answer:
Correctly maps names to list items with JSX expressions -> Option A
Quick Check:
Use map with curly braces for list rendering = Correctly maps names to list items with JSX expressions [OK]
Hint: Use map with curly braces to render lists in JSX [OK]
Common Mistakes:
Using forEach instead of map for rendering
Forgetting curly braces around variables
Rendering variable names as plain text
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.