0
0
Svelteframework~10 mins

Component events (createEventDispatcher) in Svelte - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Component events (createEventDispatcher)
Component A creates dispatcher
Component A dispatches event
Parent listens to event
Parent handles event
Parent updates state or reacts
Component A creates an event dispatcher, sends an event, and the parent listens and reacts to it.
Execution Sample
Svelte
import { createEventDispatcher } from 'svelte';

const dispatch = createEventDispatcher();

function sendMessage() {
  dispatch('message', { text: 'Hello from child' });
}
This code creates an event dispatcher and sends a 'message' event with data when sendMessage is called.
Execution Table
StepActionDispatcher StateEvent DispatchedParent ListenerParent Reaction
1Component initializesDispatcher createdNoneNo event yetNo reaction
2sendMessage() calledDispatcher readymessage event with {text: 'Hello from child'}Receives 'message' eventUpdates message display
3No further eventsDispatcher readyNoneNo eventNo change
💡 No more events dispatched, parent stops reacting.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
dispatchundefinedfunction createdfunction readyfunction ready
eventDataundefinedundefined{ text: 'Hello from child' }{ text: 'Hello from child' }
parentMessage'''''Hello from child''Hello from child'
Key Moments - 2 Insights
Why doesn't the parent react before the event is dispatched?
Because the parent listens for events dispatched by the child. Until dispatch('message') runs (see execution_table step 2), no event is sent, so no reaction happens.
What happens if dispatch is called with a different event name?
The parent only reacts if it listens for that specific event name. If the event name differs, the parent's listener won't catch it (see execution_table step 2).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'parentMessage' after step 2?
A"" (empty string)
B"Hello from child"
Cundefined
Dnull
💡 Hint
Check variable_tracker row for 'parentMessage' after Step 2.
At which step does the parent receive the event?
AStep 1
BStep 3
CStep 2
DNo step
💡 Hint
Look at execution_table column 'Parent Listener' to see when event is received.
If the child dispatches an event named 'update' instead of 'message', what happens to the parent's reaction?
AParent does not react unless listening for 'update'
BParent reacts the same way
CParent throws an error
DParent reacts twice
💡 Hint
Refer to key_moments about event names and parent listeners.
Concept Snapshot
Use createEventDispatcher() in a Svelte child component to send events.
Call dispatch('eventName', data) to notify the parent.
Parent listens with on:eventName to react.
Events allow child-to-parent communication.
Event names must match for parent to catch them.
Full Transcript
In Svelte, components can send events to their parents using createEventDispatcher. First, the child component creates a dispatcher function. When an action happens, the child calls dispatch with an event name and optional data. The parent listens for this event by adding on:eventName to the child component tag. When the event fires, the parent runs its handler and can update its state or UI. This flow allows child components to communicate upwards without direct references. The event name must match between dispatch and the parent's listener. This example shows a child sending a 'message' event with text data, and the parent updating its display when it receives it.