📖 Scenario: You are building a simple Svelte app that shows a counter. When the user clicks a button, the counter number updates on the screen automatically. This happens because Svelte uses reactivity to update the UI whenever the data changes.
🎯 Goal: Build a Svelte component that uses a reactive variable to update the displayed counter number when a button is clicked.
📋 What You'll Learn
Create a variable called count initialized to 0.
Create a reactive statement that doubles the count value into a variable called double.
Add a button that increments count by 1 when clicked.
Display both count and double values in the UI.
💡 Why This Matters
🌍 Real World
Reactivity is the core of modern UI frameworks like Svelte. It lets apps update the screen instantly when data changes, making apps feel fast and smooth.
💼 Career
Understanding reactivity helps you build interactive web apps efficiently, a key skill for frontend developer roles.
Progress0 / 4 steps
1
Set up the initial counter variable
Create a variable called count and set it to 0 inside the <script> tag.
Svelte
Hint
Use let count = 0; inside the <script> tag to create the variable.
2
Add a reactive statement to double the count
Add a reactive statement that creates a variable called double which is always twice the value of count. Use the $: syntax inside the <script> tag.
Svelte
Hint
Use $: double = count * 2; to create a reactive variable that updates when count changes.
3
Make the button increment the count
Add an on:click event to the <button> that increases the count variable by 1 when clicked.
Svelte
Hint
Use on:click={() => count += 1} on the button to update the count.
4
Display the count and double values in the UI
Replace the static numbers inside the <p> tags with the reactive variables {count} and {double} so the UI updates automatically.
Svelte
Hint
Use curly braces like {count} and {double} inside the paragraphs to show the variables.
Practice
(1/5)
1. In Svelte, why does the UI update automatically when you change a variable?
easy
A. Because Svelte uses timers to check for changes every second
B. Because the browser refreshes the whole page on every change
C. Because you have to manually call a function to update the UI
D. Because Svelte tracks reactive variables and updates the UI when they change
Solution
Step 1: Understand Svelte's reactivity system
Svelte automatically tracks variables marked reactive and listens for their changes.
Step 2: Connect reactivity to UI updates
When a reactive variable changes, Svelte updates only the parts of the UI that depend on it without a full page reload.
Final Answer:
Because Svelte tracks reactive variables and updates the UI when they change -> Option D
Quick Check:
Reactivity = automatic UI update [OK]
Hint: Svelte auto-updates UI when reactive variables change [OK]
Common Mistakes:
Thinking the whole page reloads on variable change
Believing manual UI update calls are needed
Assuming timers check for changes
2. Which of the following is the correct way to declare a reactive variable in Svelte?
easy
A. let count = 0;
B. var $count = 0;
C. const count = reactive(0);
D. $: doubled = count * 2;
Solution
Step 1: Identify reactive declaration syntax
Svelte uses let to declare reactive variables at the top level. Reassigning them triggers automatic UI updates.
Step 2: Check each option
let count = 0; declares a reactive variable. var $count = 0; and const count = reactive(0); are invalid syntax. $: doubled = count * 2; is a reactive statement for derived values.
Final Answer:
let count = 0; -> Option A
Quick Check:
Reactive variables = let [OK]
Hint: let declares reactive variables [OK]
Common Mistakes:
Thinking $: is required for basic variables
Using invalid syntax like reactive() or $var
Confusing reactive statements with variable declarations
What will be displayed after clicking the button twice?
medium
A. Doubled: 2
B. Doubled: 3
C. Doubled: 6
D. Doubled: 4
Solution
Step 1: Track variable changes on clicks
Initial count is 1. Each click increments count by 1. After two clicks, count = 3.
Step 2: Calculate doubled value reactively
doubled = count * 2 = 3 * 2 = 6. The UI updates to show doubled as 6.
Final Answer:
Doubled: 6 -> Option C
Quick Check:
count=3, doubled=6 [OK]
Hint: Multiply updated count by 2 for doubled value [OK]
Common Mistakes:
Forgetting count increments twice
Using old count value for doubled
Confusing doubled with count
4. What is wrong with this Svelte code if the UI does not update when count changes?
let count = 0;
function increment() {
count = count + 1;
}
<button on:click={increment}>Add</button>
<p>Count: {count}</p>
medium
A. The UI will update automatically; no error here
B. The function increment does not update count reactively
C. The event handler syntax is incorrect
D. The variable count should be declared with $:
Solution
Step 1: Check reactive variable usage
In Svelte, normal variables declared with let are reactive by default when reassigned.
Step 2: Verify event handler and UI binding
The on:click={increment} syntax is correct, and {count} will update when count changes.
Final Answer:
The UI will update automatically; no error here -> Option A
Quick Check:
Reassignment triggers UI update [OK]
Hint: Reassigning let variables updates UI automatically [OK]
Common Mistakes:
Thinking $: is needed for all variables
Believing event handler syntax is wrong
Assuming manual UI refresh is required
5. You want to create a Svelte component that shows a list of items and a count of how many items are selected. The count should update automatically when selection changes. Which approach best uses Svelte's reactivity to achieve this?
hard
A. Manually call a function to update the count after each selection change
B. Use a reactive statement like $: selectedCount = items.filter(i => i.selected).length;
C. Use a global variable outside the component to track selection count
D. Update the count only when the component mounts
Solution
Step 1: Understand reactive statements for derived data
Svelte's $: label allows creating reactive variables that update automatically when dependencies change.
Step 2: Apply reactive statement to selection count
Using $: selectedCount = items.filter(i => i.selected).length; ensures selectedCount updates whenever items or their selected property changes.
Final Answer:
Use a reactive statement like $: selectedCount = items.filter(i => i.selected).length; -> Option B
Quick Check:
Reactive derived data updates automatically [OK]
Hint: Use $: for automatic updates of derived values [OK]
Common Mistakes:
Manually updating counts instead of reactive statements
Using global variables causing stale data
Updating count only once on mount
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.