📖 Scenario: You are building a simple interactive button in a Svelte app. You want to use a default action to automatically focus the button when it appears on the page.
🎯 Goal: Create a Svelte component with a button that uses a default action to focus itself when the component loads.
📋 What You'll Learn
Create a Svelte component with a <button> element
Define a default action called focusOnMount that focuses the button element
Apply the use:focusOnMount directive to the button
Ensure the button is focused automatically when the component renders
💡 Why This Matters
🌍 Real World
Default actions in Svelte help automate common tasks like focusing elements, adding event listeners, or setting styles when components appear.
💼 Career
Understanding default actions is useful for building interactive, accessible web apps efficiently with Svelte.
Progress0 / 4 steps
1
Create the button element
Create a Svelte component with a <button> element that has the text Click me.
Svelte
Hint
Use the <button> tag and put the text Click me inside it.
2
Define the default action to focus the button
Add a focusOnMount function that takes a node parameter and calls node.focus() immediately. Return an empty object from the function.
Svelte
Hint
The default action is a function that receives the element as node. Call node.focus() inside it.
3
Apply the default action to the button
Use the use:focusOnMount directive on the <button> element to apply the focus action.
Svelte
Hint
Add use:focusOnMount inside the opening <button> tag.
4
Complete the component with export
Ensure the focusOnMount function is exported so it can be used as a default action in the component.
Svelte
Hint
The function must be exported with the export keyword.
Practice
(1/5)
1. What is the main purpose of a default action in Svelte?
easy
A. To add behavior to an element when it is created and clean up when removed
B. To style an element with CSS automatically
C. To create a new component dynamically
D. To fetch data from an API when the page loads
Solution
Step 1: Understand what default actions do
Default actions in Svelte run code when an element is created and can clean up when it is removed.
Step 2: Match purpose with options
Only To add behavior to an element when it is created and clean up when removed describes adding behavior on creation and cleanup on removal, which matches default actions.
Final Answer:
To add behavior to an element when it is created and clean up when removed -> Option A
Quick Check:
Default actions add and clean behavior = B [OK]
Hint: Default actions run on element mount and cleanup on unmount [OK]
Common Mistakes:
Confusing default actions with styling or data fetching
Thinking default actions create components
Assuming default actions only run once globally
2. Which of the following is the correct syntax to apply a default action named focus to an input element in Svelte?
easy
A. <input on:focus />
B. <input action:focus />
C. <input bind:focus />
D. <input use:focus />
Solution
Step 1: Recall Svelte default action syntax
Default actions are applied using use:actionName on elements.
Step 2: Compare options with correct syntax
<input use:focus /> uses use:focus, which is the correct way to apply the action.
Final Answer:
<input use:focus /> -> Option D
Quick Check:
Default action syntax = use:actionName [OK]
Hint: Use use: prefix to apply default actions [OK]
What will be the background color of the <div> when it is rendered?
medium
A. Yellow
B. No background color (default)
C. Red
D. Transparent
Solution
Step 1: Analyze the highlight action code
The action sets backgroundColor to 'yellow' on the node when applied.
Step 2: Understand the effect on the <div>
The <div> uses use:highlight, so its background color becomes yellow on render.
Final Answer:
Yellow -> Option A
Quick Check:
Action sets background to yellow = A [OK]
Hint: Default action runs on mount, sets style immediately [OK]
Common Mistakes:
Thinking destroy runs immediately and clears color
Confusing background color with text color
Assuming no style changes without CSS
4. Given this default action code:
function logClick(node) {
node.addEventListener('click', () => console.log('Clicked!'));
}
What is the main problem with this action?
medium
A. It should return a promise to work correctly
B. It uses an arrow function which is not allowed in actions
C. It does not remove the event listener when the element is removed
D. It must use use:logClick() with parentheses
Solution
Step 1: Check event listener management
The action adds a click listener but does not remove it on cleanup.
Step 2: Understand Svelte action cleanup
Actions should return an object with a destroy method to remove listeners and avoid memory leaks.
Final Answer:
It does not remove the event listener when the element is removed -> Option C
Quick Check:
Missing cleanup causes leaks = A [OK]
Hint: Always return destroy() to clean event listeners [OK]
Common Mistakes:
Ignoring cleanup leads to memory leaks
Thinking arrow functions are disallowed
Assuming parentheses are required on use
5. You want to create a default action autoFocus that focuses an input element when it appears and logs "Focused" once. Which code correctly implements this behavior?