📖 Scenario: You are building a simple Svelte app that shows a list of tasks. Each task has a unique ID and a name. You want to display these tasks in a way that Svelte can track each item efficiently when the list changes.
🎯 Goal: Create a Svelte component that uses a keyed {#each} block to render a list of tasks. Each task should have a unique id used as the key.
📋 What You'll Learn
Create an array of task objects with exact IDs and names
Add a variable to hold the number of tasks
Use a keyed {#each} block with task.id as the key
Render each task's name inside a <li> element
💡 Why This Matters
🌍 Real World
Keyed each blocks help Svelte track list items efficiently when items are added, removed, or reordered, improving performance and user experience in dynamic lists.
💼 Career
Understanding keyed each blocks is essential for building interactive user interfaces in Svelte, a popular modern frontend framework used in web development jobs.
Progress0 / 4 steps
1
Create the tasks array
Create a variable called tasks that is an array with these exact objects: { id: 1, name: 'Wash dishes' }, { id: 2, name: 'Do laundry' }, and { id: 3, name: 'Take out trash' }.
Svelte
Hint
Use let tasks = [ ... ] with the exact objects inside the array.
2
Add a variable for task count
Create a variable called taskCount and set it to the length of the tasks array.
Svelte
Hint
Use let taskCount = tasks.length; to get the number of tasks.
3
Use a keyed each block to render tasks
Write a Svelte {#each} block that loops over tasks using task.id as the key. Inside the block, render each task.name inside an <li> element.
Svelte
Hint
Use {#each tasks as task (task.id)} to start the keyed each block and close it with {/each}.
4
Add a heading showing the task count
Add an <h2> element above the list that displays the text Task count: followed by the taskCount variable.
Svelte
Hint
Use <h2>Task count: {taskCount}</h2> above the list.
Practice
(1/5)
1. What is the main purpose of using a keyed each block in Svelte?
easy
A. To prevent the list from rendering
B. To uniquely identify list items for efficient updates
C. To sort the list items automatically
D. To style list items differently
Solution
Step 1: Understand what keyed each blocks do
Keyed each blocks use a unique key to track each item in a list, helping Svelte update only changed items.
Step 2: Identify the main purpose
This unique key helps keep the UI consistent and efficient when the list changes dynamically.
Final Answer:
To uniquely identify list items for efficient updates -> Option B
Quick Check:
Keyed each blocks track items uniquely = D [OK]
Hint: Keys track items uniquely for smooth updates [OK]
Common Mistakes:
Thinking keys are for styling
Assuming keys sort items
Believing keys stop rendering
2. Which of the following is the correct syntax for a keyed each block in Svelte?
easy
A. {#each items as item (item.id)}
B. {#each items as item}
C. {#each items (item.id)}
D. {#each items item.id as item}
Solution
Step 1: Recall keyed each block syntax
The correct syntax uses parentheses after the 'as' clause to specify the key: {#each items as item (item.id)}
Step 2: Compare options
{#each items as item (item.id)} matches the correct syntax exactly, others miss parentheses or order.
Final Answer:
{#each items as item (item.id)} -> Option A
Quick Check:
Key goes in parentheses after 'as' = B [OK]
Hint: Key is inside parentheses after 'as' in each block [OK]
Common Mistakes:
Omitting parentheses around the key
Placing key before 'as'
Using wrong order of parameters
3. Given the code:
{#each users as user (user.id)}
{user.name}
{/each}
What happens if the users array changes by adding a new user with a unique id?
medium
A. Only the new user is added to the DOM without re-rendering existing users
B. All users are re-rendered from scratch
C. The list will not update until the page reloads
D. An error occurs because keys must be strings
Solution
Step 1: Understand keyed each block behavior on list change
When a new item with a unique key is added, Svelte updates only that item in the DOM.
Step 2: Analyze the effect of adding a new user
The existing users remain unchanged; only the new user is inserted efficiently.
Final Answer:
Only the new user is added to the DOM without re-rendering existing users -> Option A
Quick Check:
Keyed blocks update only changed items = C [OK]
Hint: New unique keys add items without full re-render [OK]
Common Mistakes:
Thinking all items re-render on change
Believing list updates require page reload
Assuming keys must be strings only
4. Consider this Svelte code snippet:
{#each items as item (item.key)}
{item.value}
{/each}
If item.key is not unique for all items, what problem can occur?
medium
A. Svelte will automatically fix duplicate keys
B. The code will throw a syntax error
C. The list will not render at all
D. Svelte may reuse DOM elements incorrectly, causing UI bugs
Solution
Step 1: Understand the role of unique keys
Keys must be unique to correctly track each item; duplicates confuse Svelte's DOM updates.
Step 2: Identify the effect of duplicate keys
With duplicate keys, Svelte may wrongly reuse DOM elements, causing wrong data to show or UI glitches.
Final Answer:
Svelte may reuse DOM elements incorrectly, causing UI bugs -> Option D
Quick Check:
Duplicate keys cause wrong DOM reuse = A [OK]
Hint: Keys must be unique to avoid UI bugs [OK]
Common Mistakes:
Expecting syntax errors from duplicates
Thinking list won't render at all
Assuming Svelte fixes duplicates automatically
5. You have a list of tasks with possible duplicate names but unique IDs. You want to display them with a keyed each block and allow dynamic reordering. Which key should you use and why?
{#each tasks as task (???)}
{task.name}
{/each}
hard
A. Use the index like each tasks as task (index) for simplicity
B. Use task.name because names are easier to read
C. Use task.id because IDs are unique and stable keys
D. No key is needed for dynamic lists
Solution
Step 1: Identify the best key for dynamic lists
Keys must be unique and stable to track items correctly during reordering.
Step 2: Compare key options
Task IDs are unique and stable, while names can duplicate and indexes change on reorder.
Final Answer:
Use task.id because IDs are unique and stable keys -> Option C
Quick Check:
Unique stable keys like IDs are best for dynamic lists = A [OK]
Hint: Use unique stable IDs as keys for dynamic lists [OK]
Common Mistakes:
Using non-unique names as keys
Using index keys causing wrong updates
Skipping keys on dynamic lists
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.