Bird
Raised Fist0
Svelteframework~10 mins

Default actions in Svelte - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Default actions
User Event Occurs
↓
Browser Checks for Default Action
↓
Svelte Event Handler Runs
↓
Calls event.preventDefault()?
↓
Default action prevented
↓
Default action happens
↓
Event Propagation Continues or Stops
When a user event happens, the browser tries to do its default action. Svelte event handlers can stop this by calling event.preventDefault(), which blocks the default action.
Execution Sample
Svelte
function handleClick(event) {
  event.preventDefault();
  alert('Clicked!');
}

<form>
  <button on:click={handleClick}>Click me</button>
</form>
This code prevents the button's default action and shows an alert instead when clicked.
Execution Table
StepEventDefault ActionHandler Calledevent.preventDefault() Called?Default Action Happens?Output
1User clicks buttonButton submits form (default)handleClick calledYesNoAlert 'Clicked!' shown
2User clicks buttonButton submits form (default)No handlerN/AYesForm submits normally
3User clicks buttonButton submits form (default)handleClick calledNoYesForm submits normally
💡 Execution stops after event handler finishes and default action is either prevented or allowed.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3
event.preventDefaultCalledfalsetruefalsefalse
defaultActionHappenstruefalsetruetrue
Key Moments - 2 Insights
Why does calling event.preventDefault() stop the default browser action?
Calling event.preventDefault() tells the browser not to perform its usual action for that event, as shown in execution_table row 1 where the form does not submit.
What happens if you forget to call event.preventDefault() in the handler?
The default action still happens, like submitting a form on button click, as shown in execution_table row 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at step 1, what is the value of event.preventDefault() called?
AN/A
BNo
CYes
DUnknown
💡 Hint
Check the 'event.preventDefault() Called?' column at step 1 in execution_table.
At which step does the default action happen?
AStep 1
BStep 2
CStep 3
DNone
💡 Hint
Look at the 'Default Action Happens?' column in execution_table.
If you remove event.preventDefault() from the handler, how does the output change?
AAlert still shows and default action prevented
BAlert shows but default action happens too
CNo alert and default action happens
DNo alert and default action prevented
💡 Hint
Compare rows 1 and 3 in execution_table for handler behavior.
Concept Snapshot
Default actions are browser behaviors triggered by events.
In Svelte, event handlers receive the event object.
Calling event.preventDefault() stops the browser's default action.
Without preventDefault(), default action runs after handler.
Use preventDefault() to control event outcomes.
Full Transcript
When a user interacts with an element, the browser tries to perform a default action, like submitting a form when a button is clicked. In Svelte, event handlers receive an event object. If the handler calls event.preventDefault(), it stops the browser from doing its default action. Otherwise, the default action happens after the handler runs. This lets you control what happens on user events.

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

  1. 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.
  2. 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.
  3. Final Answer:

    To add behavior to an element when it is created and clean up when removed -> Option A
  4. 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

  1. Step 1: Recall Svelte default action syntax

    Default actions are applied using use:actionName on elements.
  2. Step 2: Compare options with correct syntax

    <input use:focus /> uses use:focus, which is the correct way to apply the action.
  3. Final Answer:

    <input use:focus /> -> Option D
  4. Quick Check:

    Default action syntax = use:actionName [OK]
Hint: Use use: prefix to apply default actions [OK]
Common Mistakes:
  • Using action: or on: instead of use:
  • Confusing event handlers with actions
  • Trying to bind actions like variables
3. Consider this Svelte code snippet:
function highlight(node) {
  node.style.backgroundColor = 'yellow';
  return {
    destroy() {
      node.style.backgroundColor = '';
    }
  };
}

<div use:highlight>Hello</div>

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

  1. Step 1: Analyze the highlight action code

    The action sets backgroundColor to 'yellow' on the node when applied.
  2. Step 2: Understand the effect on the <div>

    The <div> uses use:highlight, so its background color becomes yellow on render.
  3. Final Answer:

    Yellow -> Option A
  4. 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

  1. Step 1: Check event listener management

    The action adds a click listener but does not remove it on cleanup.
  2. Step 2: Understand Svelte action cleanup

    Actions should return an object with a destroy method to remove listeners and avoid memory leaks.
  3. Final Answer:

    It does not remove the event listener when the element is removed -> Option C
  4. 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?
hard
A.
function autoFocus(node) {
  node.focus();
  return {
    update() {
      console.log('Focused');
    }
  };
}
B.
function autoFocus(node) {
  node.focus();
  console.log('Focused');
  return {
    destroy() {}
  };
}
C.
function autoFocus(node) {
  setTimeout(() => node.focus(), 0);
  console.log('Focused');
}
D.
function autoFocus(node) {
  node.addEventListener('focus', () => console.log('Focused'));
  node.focus();
  return {
    destroy() {
      node.removeEventListener('focus', () => console.log('Focused'));
    }
  };
}

Solution

  1. Step 1: Focus element and log once on mount

    Calling node.focus() and logging immediately runs once when the element appears.
  2. Step 2: Provide cleanup method

    Returning an object with an empty destroy method is valid and ensures cleanup structure.
  3. Final Answer:

    Function that focuses and logs once, with destroy method -> Option B
  4. Quick Check:

    Focus and log once on mount = D [OK]
Hint: Focus and log immediately, return destroy() for cleanup [OK]
Common Mistakes:
  • Adding unnecessary event listeners for logging
  • Missing return object with destroy method
  • Logging multiple times on updates
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard