Bird
Raised Fist0
Reactframework~10 mins

If conditions in JSX in React - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to render the message only if showMessage is true.

React
function Greeting({ showMessage }) {
  return (
    <div>
      {showMessage && [1]
    </div>
  );
}
Drag options to blanks, or click blank then click option'
A<p>Hello, world!</p>
B<p>Hello, friend!</p>
C<p>Welcome back!</p>
D<p>Goodbye!</p>
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to wrap the message in JSX tags.
Using a string without JSX tags.
2fill in blank
medium

Complete the code to render Loading... if isLoading is true, otherwise render Data loaded.

React
function Loader({ isLoading }) {
  return (
    <div>
      {isLoading ? [1] : <p>Data loaded</p>}
    </div>
  );
}
Drag options to blanks, or click blank then click option'
ALoading...
B"Loading..."
C<span>Loading</span>
D<p>Loading...</p>
Attempts:
3 left
💡 Hint
Common Mistakes
Using plain strings without JSX tags.
Forgetting the colon ':' in the ternary operator.
3fill in blank
hard

Fix the error in the code to correctly render Welcome back! only if isLoggedIn is true.

React
function Welcome({ isLoggedIn }) {
  return (
    <div>
      {isLoggedIn && [1]
    </div>
  );
}
Drag options to blanks, or click blank then click option'
A<p>Welcome back!</p>
B"Welcome back!"
CWelcome back!
D<Welcome back! />
Attempts:
3 left
💡 Hint
Common Mistakes
Using plain strings without JSX tags.
Trying to use invalid JSX syntax like .
4fill in blank
hard

Fill both blanks to render Admin Panel if isAdmin is true, otherwise render User Panel.

React
function Panel({ isAdmin }) {
  return (
    <div>
      {isAdmin ? [1] : [2]
    </div>
  );
}
Drag options to blanks, or click blank then click option'
A<h1>Admin Panel</h1>
B<h2>User Panel</h2>
C<h1>User Panel</h1>
D<h2>Admin Panel</h2>
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up the tags or texts for admin and user panels.
Using strings instead of JSX elements.
5fill in blank
hard

Fill all three blanks to render a greeting with the user's name if isLoggedIn is true, otherwise show a login button.

React
function UserGreeting({ isLoggedIn, userName }) {
  return (
    <div>
      {isLoggedIn ? <p>Hello, [1]!</p> : <button [2]>[3]</button>}
    </div>
  );
}
Drag options to blanks, or click blank then click option'
AuserName
Baria-label="login button"
CLog in
Dname
Attempts:
3 left
💡 Hint
Common Mistakes
Using a string 'userName' instead of the variable userName.
Forgetting the aria-label attribute on the button.
Using incorrect button text.

Practice

(1/5)
1. Which of the following is the correct way to conditionally render a message in JSX when isLoggedIn is true?
easy
A. {if (isLoggedIn) <p>Welcome back!</p>}
B. {isLoggedIn && <p>Welcome back!</p>}
C. {isLoggedIn ? <p>Welcome back!</p>}
D. {isLoggedIn || <p>Welcome back!</p>}

Solution

  1. Step 1: Understand JSX conditional rendering with &&

    In JSX, condition && expression renders the expression only if the condition is true.
  2. Step 2: Check each option's syntax

    {isLoggedIn && <p>Welcome back!</p>} uses {isLoggedIn && <p>Welcome back!</p>}, which is correct. {if (isLoggedIn) <p>Welcome back!</p>} uses an invalid if statement inside JSX. {isLoggedIn ? <p>Welcome back!</p>} uses an incomplete ternary operator without the false branch (`: expression`), causing a syntax error. {isLoggedIn || <p>Welcome back!</p>} uses ||, which is incorrect for this purpose.
  3. Final Answer:

    {isLoggedIn && <p>Welcome back!</p>} -> Option B
  4. Quick Check:

    Use && for simple true condition rendering [OK]
Hint: Use && to show content only if true [OK]
Common Mistakes:
  • Trying to use if statements directly inside JSX
  • Using || instead of && for conditional rendering
  • Confusing ternary with && when only one condition is needed
2. Which JSX snippet correctly uses a ternary operator to show <p>Hello</p> if showHello is true, otherwise <p>Goodbye</p>?
easy
A. {showHello && <p>Hello</p> else <p>Goodbye</p>}
B. {showHello ? <p>Goodbye</p> : <p>Hello</p>}
C. {if (showHello) <p>Hello</p> else <p>Goodbye</p>}
D. {showHello ? <p>Hello</p> : <p>Goodbye</p>}

Solution

  1. Step 1: Understand ternary syntax in JSX

    The ternary operator syntax is condition ? expressionIfTrue : expressionIfFalse.
  2. Step 2: Match the expressions to the condition

    {showHello ? <p>Hello</p> : <p>Goodbye</p>} correctly shows Hello if showHello is true, else Goodbye. {showHello && <p>Hello</p> else <p>Goodbye</p>} uses invalid syntax with else inside JSX. {if (showHello) <p>Hello</p> else <p>Goodbye</p>} tries to use if statement inside JSX, which is invalid. {showHello ? <p>Goodbye</p> : <p>Hello</p>} reverses the messages.
  3. Final Answer:

    {showHello ? <p>Hello</p> : <p>Goodbye</p>} -> Option D
  4. Quick Check:

    Ternary = condition ? true : false [OK]
Hint: Ternary: condition ? true : false for two choices [OK]
Common Mistakes:
  • Using if/else statements directly inside JSX
  • Swapping true and false expressions
  • Using && when two choices are needed
3. What will be rendered by this React component?
function Greeting({ isMorning }) {
  return (
    <div>
      {isMorning ? <h1>Good morning!</h1> : <h1>Good evening!</h1>}
      {isMorning && <p>Have a nice day!</p>}
    </div>
  );
}

If isMorning is false?
medium
A.

Good evening!

B.

Good evening!

Have a nice day!

C.

Good morning!

Have a nice day!

D.

Good morning!

Solution

  1. Step 1: Evaluate the ternary expression with isMorning = false

    The ternary isMorning ? <h1>Good morning!</h1> : <h1>Good evening!</h1> renders <h1>Good evening!</h1> because isMorning is false.
  2. Step 2: Evaluate the && expression with isMorning = false

    The expression isMorning && <p>Have a nice day!</p> renders nothing because isMorning is false.
  3. Final Answer:

    <div><h1>Good evening!</h1></div> -> Option A
  4. Quick Check:

    False && anything = nothing [OK]
Hint: False && expression renders nothing; ternary picks false branch [OK]
Common Mistakes:
  • Assuming && renders content when condition is false
  • Mixing up ternary true/false branches
  • Expecting both expressions to render always
4. Identify the error in this JSX snippet:
return (
  <div>
    {isActive ? <p>Active</p>}
  </div>
);
medium
A. No error, code is valid
B. Using if statement inside JSX
C. Missing else part in ternary operator
D. Incorrect use of && operator

Solution

  1. Step 1: Check ternary operator syntax

    The ternary operator requires both true and false expressions: condition ? exprIfTrue : exprIfFalse. Here, the false part is missing.
  2. Step 2: Understand JSX requirements

    Without the false expression, JSX will throw a syntax error because the ternary is incomplete.
  3. Final Answer:

    Missing else part in ternary operator -> Option C
  4. Quick Check:

    Ternary needs both ? and : parts [OK]
Hint: Ternary must have both ? and : parts [OK]
Common Mistakes:
  • Omitting the else (false) part in ternary
  • Confusing ternary with && operator
  • Trying to use if statements inside JSX
5. You want to render a list of user names, but only show the name if the user is active. Which JSX code correctly implements this using map and conditional rendering?
hard
A. {users.map(user => user.isActive ? <li key={user.id}>{user.name}</li> : null)}
B. {users.map(user => if (user.isActive) return <li key={user.id}>{user.name}</li> )}
C. {users.map(user => user.isActive || <li>{user.name}</li>)}
D. {users.map(user => user.isActive ? <li>{user.name}</li> : <li>Inactive</li>)}

Solution

  1. Step 1: Understand conditional rendering inside map

    To render only active users, use a ternary that returns the list item or null.
  2. Step 2: Check key usage and syntax

    {users.map(user => user.isActive ? <li key={user.id}>{user.name}</li> : null)} correctly uses key={user.id} and returns null for inactive users, which React ignores.
  3. Step 3: Analyze other options

    {users.map(user => if (user.isActive) return <li key={user.id}>{user.name}</li> )} uses invalid syntax: `if` statement directly after arrow function requires block `{}` braces. {users.map(user => user.isActive || <li>{user.name}</li>)} uses `||` which renders items for inactive users and misses keys. {users.map(user => user.isActive ? <li>{user.name}</li> : <li>Inactive</li>)} shows inactive users with text, which is not desired.
  4. Final Answer:

    {users.map(user => user.isActive ? <li key={user.id}>{user.name}</li> : null)} -> Option A
  5. Quick Check:

    Use ternary with key and null for conditional list rendering [OK]
Hint: Use ternary with key and null to skip items [OK]
Common Mistakes:
  • Missing key prop in list items
  • Using if statements inside map without return
  • Rendering false or undefined instead of null
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard