Context lets components share data easily without passing it through many layers. This avoids the hassle of sending props step-by-step.
Why context shares data without prop drilling in Svelte
Introduction
Syntax
Svelte
import { setContext, getContext } from 'svelte'; // In a parent component setContext('key', value); // In a child or nested component const value = getContext('key');
setContext shares data from a parent component.
getContext retrieves that data in any nested child component.
Examples
Svelte
import { setContext } from 'svelte'; setContext('color', 'blue');
Svelte
import { getContext } from 'svelte'; const color = getContext('color');
Sample Program
The parent sets a user object in context. The child gets it directly without props. It shows "Hello, Anna!".
Svelte
<script> import { setContext } from 'svelte'; import Child from './Child.svelte'; // Parent component setContext('user', { name: 'Anna' }); </script> <Child />
Important Notes
Context only works between parent and nested children, not unrelated components.
Use unique keys to avoid conflicts in context data.
Context helps keep your code clean and easier to maintain.
Summary
Context shares data without passing props through every component.
Use setContext in a parent and getContext in children.
This makes your app simpler and cleaner.
Practice
1. Why does Svelte's context API help avoid prop drilling?
easy
Solution
Step 1: Understand prop drilling
Prop drilling means passing data through many intermediate components even if they don't need it.Step 2: How context helps
Context lets a parent share data directly with any child, skipping intermediate components.Final Answer:
Because it allows sharing data directly between components without passing props through every level -> Option AQuick Check:
Context avoids prop drilling = D [OK]
Hint: Context shares data directly, skipping intermediate props [OK]
Common Mistakes:
- Thinking context replaces events
- Believing context auto-updates DOM
- Assuming all components share one state variable
2. Which Svelte function is used to provide context data to child components?
easy
Solution
Step 1: Identify context provider function
In Svelte,setContextis used in a parent to provide data.Step 2: Differentiate from consumer function
getContextis used in children to access that data, not to provide it.Final Answer:
setContext -> Option BQuick Check:
Provide context = setContext [OK]
Hint: Use setContext to provide data, getContext to consume [OK]
Common Mistakes:
- Confusing getContext as provider
- Using React's useContext in Svelte
- Assuming provideContext exists
3. What will be logged by the child component in this Svelte code?
/* Parent.svelte */ /* Child.svelte */
medium
Solution
Step 1: Understand setContext usage
The parent sets context with key 'user' and value { name: 'Anna' }.Step 2: Child accesses context
The child calls getContext('user') and gets the object, then logs user.name which is 'Anna'.Final Answer:
Anna -> Option AQuick Check:
getContext returns provided data = Anna [OK]
Hint: getContext returns parent's data by key [OK]
Common Mistakes:
- Expecting undefined if not passed as prop
- Confusing getContext with props
- Thinking getContext throws error if key missing
4. Identify the error in this Svelte code using context:
/* Parent.svelte */ /* Child.svelte */
medium
Solution
Step 1: Compare keys in setContext and getContext
Parent uses 'theme' (lowercase), child uses 'Theme' (capital T). Keys are case-sensitive.Step 2: Effect of key mismatch
Because keys differ, getContext returns undefined, causing unexpected behavior.Final Answer:
The key used in getContext has different capitalization than setContext -> Option DQuick Check:
Context keys are case-sensitive = A [OK]
Hint: Match context keys exactly, including case [OK]
Common Mistakes:
- Thinking setContext must be in onMount
- Believing getContext can't be used in children
- Assuming keys can be numbers only
5. In a nested Svelte component tree, how does context help when a deeply nested child needs data from a distant ancestor without prop drilling?
Why is this approach better than passing props through Parent.svelte?
/* Grandparent.svelte */ /* Parent.svelte */ /* Child.svelte */
Why is this approach better than passing props through Parent.svelte?
hard
Solution
Step 1: Understand nested component data flow
Without context, data must be passed through Parent.svelte as props even if it doesn't use it.Step 2: How context simplifies this
Context lets Child.svelte get data directly from Grandparent.svelte, skipping Parent.svelte entirely.Final Answer:
Because context allows Child.svelte to access data directly without Parent.svelte needing to pass props -> Option CQuick Check:
Context skips intermediate props = B [OK]
Hint: Context skips intermediate components, direct data access [OK]
Common Mistakes:
- Thinking context updates props automatically
- Believing context duplicates data everywhere
- Assuming context still passes props through all components
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
