Use parentheses around JSX inside conditions for better readability.
Don't use if statements directly inside JSX; use ternary or && instead.
Summary
If conditions in JSX let you show different things based on rules.
Use ternary (condition ? A : B) for two choices.
Use && to show something only if a condition is true.
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
Step 1: Understand JSX conditional rendering with &&
In JSX, condition && expression renders the expression only if the condition is true.
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.
Final Answer:
{isLoggedIn && <p>Welcome back!</p>} -> Option B
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
Step 1: Understand ternary syntax in JSX
The ternary operator syntax is condition ? expressionIfTrue : expressionIfFalse.
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.
Final Answer:
{showHello ? <p>Hello</p> : <p>Goodbye</p>} -> Option D
Quick Check:
Ternary = condition ? true : false [OK]
Hint: Ternary: condition ? true : false for two choices [OK]
The ternary operator requires both true and false expressions: condition ? exprIfTrue : exprIfFalse. Here, the false part is missing.
Step 2: Understand JSX requirements
Without the false expression, JSX will throw a syntax error because the ternary is incomplete.
Final Answer:
Missing else part in ternary operator -> Option C
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>)}