Bird
Raised Fist0
Svelteframework~5 mins

Action with event dispatching in Svelte - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Svelte action?
A Svelte action is a reusable function that can be applied to HTML elements to add behavior or side effects when the element is created or updated.
Click to reveal answer
intermediate
How do you dispatch a custom event from a Svelte action?
You create a new CustomEvent and use the element's dispatchEvent method to send it, allowing parent components to listen and react.
Click to reveal answer
intermediate
Why use event dispatching inside a Svelte action?
Event dispatching lets the action communicate with the component or other parts of the app, sending information like user interactions or state changes.
Click to reveal answer
advanced
Show the basic structure of a Svelte action that dispatches a 'custom' event.
function myAction(node) {
  const handleClick = () => {
    node.dispatchEvent(new CustomEvent('custom'));
  };
  node.addEventListener('click', handleClick);
  return {
    destroy() {
      node.removeEventListener('click', handleClick);
    }
  };
}
Click to reveal answer
beginner
How do you listen to a custom event dispatched by an action in a Svelte component?
Use the on:event syntax on the element where the action is applied, for example: <div use:myAction on:custom={handler}>.
Click to reveal answer
What parameter does a Svelte action function receive?
AThe component's props
BThe component instance
CThe event object
DThe HTML element node it is applied to
How do you remove event listeners in a Svelte action?
ABy returning a destroy function from the action
BBy calling removeEventListener outside the action
CBy using the onDestroy lifecycle function
DBy setting the event listener to null
Which method sends a custom event from an element in Svelte?
AdispatchEvent(new CustomEvent('eventName'))
Bemit('eventName')
Ctrigger('eventName')
DsendEvent('eventName')
How do you apply an action named 'myAction' to a div in Svelte?
A<div on:myAction></div>
B<div action={myAction}></div>
C<div use:myAction></div>
D<div bind:myAction></div>
What is the purpose of dispatching events from actions?
ATo style the element
BTo communicate from the action to the component
CTo fetch data from the server
DTo change the component's props directly
Explain how to create a Svelte action that dispatches a custom event when the user clicks the element.
Think about how to listen to clicks and send events from the element.
You got /4 concepts.
    Describe how a Svelte component listens to and handles a custom event dispatched by an action.
    Remember how events bubble and how Svelte binds event listeners.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of an action in Svelte?
      easy
      A. To create new components
      B. To add reusable behavior to HTML elements
      C. To style elements with CSS
      D. To manage global state

      Solution

      1. Step 1: Understand what actions do

        Actions in Svelte are functions that add behavior to elements, like event listeners or animations.
      2. Step 2: Compare options

        Only To add reusable behavior to HTML elements correctly describes adding reusable behavior to elements, while others describe unrelated tasks.
      3. Final Answer:

        To add reusable behavior to HTML elements -> Option B
      4. Quick Check:

        Actions = reusable element behavior [OK]
      Hint: Actions add behavior to elements, not create components [OK]
      Common Mistakes:
      • Confusing actions with components
      • Thinking actions manage styles
      • Assuming actions handle global state
      2. Which of the following is the correct way to dispatch a custom event named notify from a Svelte action?
      easy
      A. new Event('notify').dispatch(node)
      B. dispatch('notify')
      C. dispatchEvent('notify')
      D. node.dispatchEvent(new CustomEvent('notify'))

      Solution

      1. Step 1: Recall how to dispatch events in Svelte actions

        Custom events are dispatched using node.dispatchEvent(new CustomEvent('eventName')).
      2. Step 2: Check each option

        node.dispatchEvent(new CustomEvent('notify')) matches the correct syntax. Others are either missing new CustomEvent or use invalid syntax.
      3. Final Answer:

        node.dispatchEvent(new CustomEvent('notify')) -> Option D
      4. Quick Check:

        Dispatch custom event = node.dispatchEvent(new CustomEvent()) [OK]
      Hint: Use node.dispatchEvent with new CustomEvent('name') [OK]
      Common Mistakes:
      • Omitting 'new CustomEvent'
      • Calling dispatchEvent without node
      • Using incorrect method names
      3. Given this Svelte action code, what will be logged when the button is clicked?
      function clickAction(node) {
        const handleClick = () => {
          node.dispatchEvent(new CustomEvent('customClick', { detail: 'clicked' }));
        };
        node.addEventListener('click', handleClick);
        return {
          destroy() {
            node.removeEventListener('click', handleClick);
          }
        };
      }
      <button use:clickAction on:customClick={e => console.log(e.detail)}>Click me</button>
      medium
      A. 'clicked' will be logged to the console
      B. Nothing will be logged
      C. An error will occur because 'customClick' is invalid
      D. 'click' will be logged instead of 'clicked'

      Solution

      1. Step 1: Understand the action's event dispatch

        The action dispatches a 'customClick' event with detail 'clicked' when the button is clicked.
      2. Step 2: Check the event listener on the button

        The button listens for 'customClick' and logs the event's detail, which is 'clicked'.
      3. Final Answer:

        'clicked' will be logged to the console -> Option A
      4. Quick Check:

        Custom event detail logged = 'clicked' [OK]
      Hint: Custom event detail is logged on event listener [OK]
      Common Mistakes:
      • Expecting default 'click' event detail
      • Thinking event name must be 'click'
      • Ignoring event detail property
      4. Identify the error in this Svelte action code that dispatches a custom event:
      function myAction(node) {
        const onClick = () => {
          node.dispatchEvent(CustomEvent('myEvent'));
        };
        node.addEventListener('click', onClick);
        return {
          destroy() {
            node.removeEventListener('click', onClick);
          }
        };
      }
      medium
      A. destroy method is missing
      B. Event listener is added to the wrong node
      C. Missing 'new' keyword before CustomEvent
      D. Custom event name must be lowercase

      Solution

      1. Step 1: Check how CustomEvent is created

        The code calls CustomEvent('myEvent') without the new keyword, which is required to create an event instance.
      2. Step 2: Verify other parts

        Event listener is correctly added and removed; destroy method exists; event names can be uppercase.
      3. Final Answer:

        Missing 'new' keyword before CustomEvent -> Option C
      4. Quick Check:

        CustomEvent requires 'new' keyword [OK]
      Hint: Always use 'new CustomEvent' to create events [OK]
      Common Mistakes:
      • Forgetting 'new' before CustomEvent
      • Removing event listener incorrectly
      • Assuming event names must be lowercase
      5. You want to create a Svelte action that dispatches a custom event resize whenever the window is resized. Which of the following is the best way to implement this action?
      hard
      A. Add a window 'resize' listener inside the action, dispatch 'resize' event from the node, and clean up in destroy
      B. Add a 'resize' listener to the node element directly and dispatch event from node
      C. Dispatch 'resize' event once when the action is initialized
      D. Use a setInterval to check window size and dispatch event repeatedly

      Solution

      1. Step 1: Understand event source and dispatch

        Window resize events come from the window object, so the listener must be added to window, not the node.
      2. Step 2: Implement dispatch and cleanup

        The action should dispatch a custom 'resize' event from the node when window resizes, and remove the listener in destroy to avoid leaks.
      3. Final Answer:

        Add a window 'resize' listener inside the action, dispatch 'resize' event from the node, and clean up in destroy -> Option A
      4. Quick Check:

        Listen on window, dispatch from node, cleanup in destroy [OK]
      Hint: Listen on window, dispatch from node, cleanup in destroy [OK]
      Common Mistakes:
      • Adding listener to node instead of window
      • Not cleaning up event listener
      • Dispatching event only once
      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