Create a Simple Svelte Store with subscribe Method
📖 Scenario: You are building a small Svelte app that needs to share a number value across components. To do this, you will create a custom store that follows the Svelte store contract by implementing a subscribe method.
🎯 Goal: Build a custom Svelte store object with a subscribe method that allows components to listen for changes in the store's value.
📋 What You'll Learn
Create a store object with an initial value of 0
Add a subscribe method to the store object
Implement a simple way to notify subscribers when the value changes
Add a method to update the store's value
💡 Why This Matters
🌍 Real World
Custom stores are useful when you want to share data or state between multiple Svelte components without using props or context.
💼 Career
Understanding the Svelte store contract is important for building scalable and maintainable Svelte applications, a skill valued in frontend development roles.
Progress0 / 4 steps
1
Create the initial store object with a value
Create a variable called count and set it to 0.
Svelte
Hint
Use let count = 0; to create the initial value.
2
Add a subscribers list to track listeners
Create a variable called subscribers and set it to an empty array [].
Svelte
Hint
Use const subscribers = []; to hold subscriber functions.
3
Implement the subscribe method for the store
Create a function called subscribe that takes a parameter run. Inside, add run to the subscribers array and immediately call run(count) to send the current value.
Svelte
Hint
Remember to call run(count) right after adding the subscriber.
4
Add an update method to change the value and notify subscribers
Create a function called set that takes a parameter value. Inside, set count = value and then call each function in subscribers with the new count.
Svelte
Hint
Use subscribers.forEach(run => run(count)) to notify all subscribers.
Practice
(1/5)
1. What does the subscribe method of a Svelte store do?
easy
A. It resets the store to its initial value.
B. It updates the store value directly.
C. It deletes the store permanently.
D. It lets you watch store changes and react immediately.
Solution
Step 1: Understand the purpose of subscribe
The subscribe method allows you to listen to changes in the store's value.
Step 2: Identify what subscribe enables
It lets your code react immediately whenever the store value changes.
Final Answer:
It lets you watch store changes and react immediately. -> Option D
Quick Check:
subscribe watches changes = C [OK]
Hint: Remember: subscribe means listen and react to changes [OK]
Common Mistakes:
Thinking subscribe changes the store value
Confusing subscribe with reset or delete
Assuming subscribe returns the store value directly
2. Which of the following is the correct syntax to subscribe to a Svelte store named count?
easy
A. count.subscribe = value => console.log(value);
B. count.subscribe(value => console.log(value));
C. subscribe(count, value => console.log(value));
D. count.onSubscribe(value => console.log(value));
Solution
Step 1: Recall the store subscription syntax
The correct way is to call subscribe as a method on the store with a callback.
Step 2: Match the syntax to the options
count.subscribe(value => console.log(value)); correctly calls count.subscribe with a function to receive updates.
Final Answer:
count.subscribe(value => console.log(value)); -> Option B
Quick Check:
Method call subscribe with callback = A [OK]
Hint: subscribe is a method: store.subscribe(callback) [OK]
Common Mistakes:
Assigning subscribe instead of calling it
Using a non-existent method like onSubscribe
Calling subscribe as a standalone function
3. Given the code below, what will be logged to the console?
A. You must import subscribe separately from the store.
B. The subscribe callback must return a value.
C. You cannot call unsubscribe directly on the store.
D. The store must be initialized with a string, not a number.
Solution
Step 1: Understand unsubscribe usage
The subscribe method returns an unsubscribe function to stop listening.
Step 2: Identify the error in calling unsubscribe
Calling unsubscribe directly on the store is invalid; you must call the function returned by subscribe.
Final Answer:
You cannot call unsubscribe directly on the store. -> Option C
Quick Check:
unsubscribe is returned by subscribe, not a store method [OK]
Hint: unsubscribe comes from subscribe, not store itself [OK]
Common Mistakes:
Calling unsubscribe on the store instead of returned function
Expecting subscribe callback to return a value
Confusing store initialization types
5. You want to create a custom store that logs every subscription and unsubscription. Which of the following correctly implements the subscribe method to follow the store contract?
hard
A. function customStore() {
let value = 0;
return {
subscribe(run) {
console.log('subscribed');
run(value);
return () => console.log('unsubscribed');
}
};
}
B. function customStore() {
let value = 0;
return {
subscribe(run) {
console.log('subscribed');
return () => console.log('unsubscribed');
}
};
}
C. function customStore() {
let value = 0;
return {
subscribe() {
console.log('subscribed');
return () => console.log('unsubscribed');
}
};
}
D. function customStore() {
let value = 0;
return {
subscribe(run) {
run(value);
console.log('subscribed');
}
};
}
Solution
Step 1: Check the subscribe method signature
The subscribe method must accept a callback run and call it immediately with the current value.
Step 2: Verify logging and return of unsubscribe
function customStore() {
let value = 0;
return {
subscribe(run) {
console.log('subscribed');
run(value);
return () => console.log('unsubscribed');
}
};
} logs 'subscribed' before calling run(value) and returns a function that logs 'unsubscribed'.
Step 3: Confirm distractors are invalid
B misses calling run(value), C lacks run parameter, D misses returning the unsubscribe function.
Final Answer:
correctly implements subscribe with logging and unsubscribe function -> Option A
Quick Check:
subscribe calls run(value) and returns unsubscribe function [OK]
Hint: subscribe calls run(value) then returns unsubscribe function [OK]
Common Mistakes:
Not calling run with current value
Missing the unsubscribe function return
Logging after calling run instead of before
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.