Chapter 5: Reactive State
Svelte's reactivity system is one of its most powerful features. Unlike other frameworks, Svelte makes reactivity feel natural and intuitive. In this chapter, you'll learn how to create and manage reactive state.
Declaring Reactive Variables
In Svelte, any variable declared in the script block is potentially reactive:
<script>
let count = 0;
function increment() {
count += 1; // Svelte detects this change automatically
}
</script>
<p>Count: {count}</p>
<button on:click={increment}>Increment</button>
When you assign a new value to count, Svelte automatically updates the UI. No need for setState() or action dispatchers!
Reactive Declarations
Use the $: label to create reactive declarations that automatically update when their dependencies change:
<script>
let count = 0;
let doubled;
$: doubled = count * 2;
</script>
<p>Count: {count}</p>
<p>Doubled: {doubled}</p>
<button on:click={() => count++}>Increment</button>
The $: directive ensures that doubled updates whenever count changes.
Reactive Statements
You can also use $: for statements, not just declarations:
<script>
let count = 0;
$: if (count > 10) {
console.log('Count exceeded 10!');
}
</script>
Computed Properties
Create computed properties that re-calculate when dependencies change:
<script>
let firstName = 'John';
let lastName = 'Doe';
$: fullName = `${firstName} ${lastName}`;
</script>
<p>Full name: {fullName}</p>
Svelte's reactivity system makes state management intuitive and efficient!