Bird
Raised Fist0
Svelteframework~5 mins

Context vs stores decision in Svelte - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is a store in Svelte?
A store is a reactive object that holds state and allows components to subscribe to changes. It helps share data across many components easily.
Click to reveal answer
beginner
What is context in Svelte used for?
Context lets a parent component pass data directly to its descendants without passing props through every level. It's good for deeply nested components.
Click to reveal answer
intermediate
When should you choose stores over context in Svelte?
Use stores when you need shared state accessible by many components at different places in the app, or when state changes often and needs to be reactive.
Click to reveal answer
intermediate
When is context a better choice than stores in Svelte?
Context is better when you want to pass data only to a specific subtree of components, especially if the data is static or changes rarely.
Click to reveal answer
advanced
Can you combine context and stores in Svelte?
Yes! You can pass a store through context to limit its scope to a subtree, combining benefits of both patterns.
Click to reveal answer
What does a Svelte store provide?
AReactive shared state accessible by multiple components
BA way to style components globally
CA method to fetch data from APIs
DA tool to create animations
Which Svelte feature lets a parent pass data to deeply nested children without prop drilling?
ASlots
BStores
CContext
DActions
When should you prefer context over stores?
AWhen data needs to be shared app-wide
BWhen data is only needed in a specific subtree
CWhen you want to style components
DWhen you want to fetch data asynchronously
Can stores be passed through context in Svelte?
AYes, to limit store scope to a subtree
BNo, stores and context are incompatible
COnly if the store is writable
DOnly for read-only stores
Which is NOT a benefit of using stores?
AReactive updates across components
BGlobal state management
CEasy subscription and updates
DPassing data only to one child component
Explain when you would use context instead of stores in a Svelte app.
Think about component hierarchy and data scope.
You got /4 concepts.
    Describe how stores and context can work together in Svelte.
    Consider sharing reactive data only within part of the app.
    You got /4 concepts.

      Practice

      (1/5)
      1. In Svelte, when should you use context instead of stores?
      easy
      A. To manage asynchronous data fetching
      B. To share data only between a parent and its child components locally
      C. To share reactive data globally across unrelated components
      D. To create CSS styles scoped to a component

      Solution

      1. Step 1: Understand context usage

        Context is designed to share data locally down the component tree without passing props explicitly.
      2. Step 2: Compare with stores

        Stores are for global reactive data accessible anywhere by importing, not limited to parent-child.
      3. Final Answer:

        To share data only between a parent and its child components locally -> Option B
      4. Quick Check:

        Context = local sharing [OK]
      Hint: Context is for local, stores for global reactive data [OK]
      Common Mistakes:
      • Using stores for local-only data sharing
      • Confusing context with global state management
      • Thinking context is reactive globally
      • Using context for styling or async tasks
      2. Which of the following is the correct way to set a context value in a Svelte component?
      easy
      A. import { createContext } from 'svelte'; createContext('key', value);
      B. import { useContext } from 'svelte'; useContext('key', value);
      C. import { setContext } from 'svelte'; setContext('key', value);
      D. import { setStore } from 'svelte'; setStore('key', value);

      Solution

      1. Step 1: Recall Svelte context API

        Svelte uses setContext to provide a value to child components.
      2. Step 2: Check import and usage

        The correct import is from 'svelte' and the function is setContext with key and value.
      3. Final Answer:

        import { setContext } from 'svelte'; setContext('key', value); -> Option C
      4. Quick Check:

        setContext = provide context [OK]
      Hint: Use setContext to provide data down the tree [OK]
      Common Mistakes:
      • Using createContext or useContext which are React terms
      • Trying to set stores with setContext
      • Wrong import paths or function names
      • Confusing setContext with reactive stores
      3. Given this Svelte code, what will be logged to the console?
      import { writable } from 'svelte/store';
      
      const count = writable(0);
      
      count.subscribe(value => console.log(value));
      
      count.set(5);
      count.update(n => n + 1);
      
      medium
      A. [0, 5, 6]
      B. [5, 6]
      C. [0, 1, 5]
      D. [1, 5, 6]

      Solution

      1. Step 1: Understand initial subscription call

        Subscribing to a writable store immediately calls the callback with the current value, which is 0.
      2. Step 2: Trace set and update calls

        Then count.set(5) triggers callback with 5, and count.update(n => n + 1) triggers callback with 6.
      3. Final Answer:

        [0, 5, 6] -> Option A
      4. Quick Check:

        Subscription calls on current and changes [OK]
      Hint: Subscription logs current value immediately [OK]
      Common Mistakes:
      • Ignoring initial subscription call
      • Mixing order of set and update
      • Assuming update starts from 0 after set
      • Confusing subscribe behavior with events
      4. What is wrong with this Svelte code snippet that tries to share data using context?
      import { getContext } from 'svelte';
      
      const value = getContext('user');
      
      console.log(value);
      medium
      A. It tries to get context outside a component setup, causing undefined
      B. It uses getContext instead of setContext to provide data
      C. The key 'user' must be an object, not a string
      D. getContext requires two arguments, key and default value

      Solution

      1. Step 1: Check context usage location

        getContext must be called inside a component's script during initialization, not in a module scope.
      2. Step 2: Understand consequence

        Calling it outside component setup returns undefined because no context is set yet.
      3. Final Answer:

        It tries to get context outside a component setup, causing undefined -> Option A
      4. Quick Check:

        getContext only works inside component setup [OK]
      Hint: Use getContext only inside component scripts [OK]
      Common Mistakes:
      • Calling getContext in module scope
      • Confusing getContext with setContext usage
      • Assuming string keys must be objects
      • Expecting getContext to have default value argument
      5. You want to share a reactive theme color across many unrelated components in a Svelte app. Which approach is best and why?
      hard
      A. Use a global variable for shared data
      B. Use context API for local tree sharing
      C. Pass props through all components manually
      D. Use a writable store for global reactive data

      Solution

      1. Step 1: Identify sharing scope

        The theme color must be shared globally across unrelated components, not just parent-child.
      2. Step 2: Choose reactive global sharing

        Writable stores provide reactive global state accessible by importing anywhere.
      3. Step 3: Evaluate other options

        Context is local only, props are tedious for many components, global variables lack reactivity.
      4. Final Answer:

        Use a writable store for global reactive data -> Option D
      5. Quick Check:

        Stores = global reactive sharing [OK]
      Hint: Use stores for global reactive data, context for local only [OK]
      Common Mistakes:
      • Using context for global sharing
      • Passing props through many unrelated components
      • Using global variables without reactivity
      • Ignoring reactivity needs for theme changes
      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