📖 Scenario: You are building a simple Vue 3 component that uses JSX syntax to render a greeting message and a list of favorite fruits. JSX lets you write HTML-like code inside JavaScript, making your component code clear and easy to read.
🎯 Goal: Create a Vue 3 component using JSX syntax that displays a greeting and a list of fruits.
📋 What You'll Learn
Use Vue 3 Composition API with <script setup>
Use JSX syntax inside the render function
Display a greeting message inside an <h1> tag
Render a list of fruits inside <ul> with each fruit in an <li>
Use a reactive data array for fruits
💡 Why This Matters
🌍 Real World
JSX in Vue components helps you write UI code that looks like HTML but is fully integrated with JavaScript logic, making it easier to build dynamic interfaces.
💼 Career
Many modern Vue projects use JSX or similar templating techniques. Knowing JSX in Vue helps you work on advanced Vue apps and collaborate with teams using this style.
Progress0 / 4 steps
1
Set up the fruits array
Create a reactive array called fruits with these exact values: 'Apple', 'Banana', 'Cherry' using Vue's ref function.
Vue
Hint
Use import { ref } from 'vue' and then const fruits = ref([...]).
2
Add a greeting message
Create a constant called greeting and set it to the string 'Hello from JSX!'.
Vue
Hint
Just write const greeting = 'Hello from JSX!'.
3
Write the render function with JSX
Add a render function that returns JSX. It should render an <h1> with the greeting text and a <ul> with each fruit from fruits.value inside an <li>. Use fruits.value.map((fruit) => <li>{fruit}</li>).
Vue
Hint
Write a render function that returns JSX with <h1> and <ul>. Use fruits.value.map to create <li> elements.
4
Export the component
Export the component as default with the render function you created. Use export default { render }.
Vue
Hint
Write export default { render } to export the component.
Practice
(1/5)
1. What is the main purpose of using JSX in Vue components?
easy
A. To write HTML-like code inside JavaScript functions for UI rendering
B. To replace JavaScript with HTML code
C. To write CSS styles directly inside Vue components
D. To create Vue components without any JavaScript
Solution
Step 1: Understand JSX role in Vue
JSX allows writing HTML-like syntax inside JavaScript, making UI code dynamic and easier to manage.
Step 2: Compare options
Only To write HTML-like code inside JavaScript functions for UI rendering correctly describes JSX's purpose. Others confuse JSX with CSS or removing JavaScript.
Final Answer:
To write HTML-like code inside JavaScript functions for UI rendering -> Option A
Quick Check:
JSX = HTML-like code in JS [OK]
Hint: JSX mixes HTML look inside JavaScript functions [OK]
Common Mistakes:
Thinking JSX replaces JavaScript entirely
Confusing JSX with CSS styling
Believing JSX removes the need for Vue components
2. Which of the following is the correct way to return JSX inside the setup() function in Vue 3?
easy
A. return
Hello
;
B. return function() {
Hello
};
C. return () => (
Hello
);
D. return { template: '
Hello
' };
Solution
Step 1: Recall Vue 3 setup JSX syntax
In Vue 3, setup() returns a render function, usually an arrow function returning JSX wrapped in parentheses.
Step 2: Evaluate options
return () => (
Hello); correctly returns an arrow function with JSX. return
D. Missing parentheses around JSX in return function
Solution
Step 1: Check JSX return syntax in arrow function
The arrow function uses curly braces but does not return JSX explicitly or wrap JSX in parentheses, causing no output.
Step 2: Correct syntax for returning JSX
JSX must be wrapped in parentheses and returned explicitly, e.g., () => ( <button>{count}</button> ).
Final Answer:
Missing parentheses around JSX in return function -> Option D
Quick Check:
JSX must be wrapped in parentheses and returned [OK]
Hint: Wrap JSX in parentheses when returning from arrow function [OK]
Common Mistakes:
Forgetting to return JSX explicitly
Not wrapping JSX in parentheses
Thinking reactive is required for static display
5. You want to create a Vue JSX component that renders a list of items passed as a prop. Which is the correct way to map the items array to JSX elements inside setup()?
hard
A. return () => (
{props.items.forEach(item =>
{item}
)}
);
B. return () => (
{props.items.map(item =>
{item}
)}
);
C. return () => (
{for (const item of props.items)
{item}
}
);
D. return () => (
{props.items.map(item => '
' + item + '
')}
);
Solution
Step 1: Understand how to render lists in JSX
JSX uses JavaScript expressions. map() returns an array of JSX elements, perfect for rendering lists.
Step 2: Evaluate each option
return () => (
{props.items.map(item =>
{item}
)}
); correctly uses map() to return
elements. return () => (
{props.items.forEach(item =>
{item}
)}
); uses forEach which returns undefined. return () => (
{for (const item of props.items)
{item}
}
); uses invalid syntax inside JSX. return () => (
{props.items.map(item => '
' + item + '
')}
); returns strings, not JSX elements.
Final Answer:
return () => (<ul>{props.items.map(item => <li>{item}</li>)}); -> Option B
Quick Check:
Use map() to return JSX list items [OK]
Hint: Use map() to create JSX elements for lists [OK]
Common Mistakes:
Using forEach instead of map for JSX lists
Trying to use for loops inside JSX expressions
Returning strings instead of JSX elements
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.