You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: documentation/docs/01-introduction/03-reactivity-fundamentals.md
+56Lines changed: 56 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,6 +40,19 @@ class Todo {
40
40
}
41
41
```
42
42
43
+
> [!LEGACY]
44
+
> In Svelte 4, state was implicitly reactive if the variable was declared at the top level
45
+
>
46
+
> ```svelte
47
+
> <script>
48
+
> let count = 0;
49
+
> </script>
50
+
>
51
+
> <button on:click={() => count++}>
52
+
> clicks: {count}
53
+
> </button>
54
+
> ```
55
+
43
56
## `$derived`
44
57
45
58
Derived state is declared with the `$derived` rune:
@@ -61,6 +74,24 @@ The expression inside `$derived(...)` should be free of side-effects. Svelte wil
61
74
62
75
As with `$state`, you can mark class fields as `$derived`.
63
76
77
+
> [!LEGACY]
78
+
> In Svelte 4, you could use reactive statements for this.
79
+
>
80
+
> ```svelte
81
+
> <script>
82
+
> let count = 0;
83
+
> $: doubled = count * 2;
84
+
> </script>
85
+
>
86
+
> <button on:click={() => count++}>
87
+
> {doubled}
88
+
> </button>
89
+
>
90
+
> <p>{count} doubled is {doubled}</p>
91
+
> ```
92
+
>
93
+
> This only worked at the top level of a component.
94
+
64
95
## `$effect`
65
96
66
97
To run _side-effects_ when the component is mounted to the DOM, and when values change, we can use the `$effect` rune ([demo](/#H4sIAAAAAAAAE31T24rbMBD9lUG7kAQ2sbdlX7xOYNk_aB_rQhRpbAsU2UiTW0P-vbrYubSlYGzmzMzROTPymdVKo2PFjzMzfIusYB99z14YnfoQuD1qQh-7bmdFQEonrOppVZmKNBI49QthCc-OOOH0LZ-9jxnR6c7eUpOnuv6KeT5JFdcqbvbcBcgDz1jXKGg6ncFyBedYR6IzLrAZwiN5vtSxaJA-EzadfJEjKw11C6GR22-BLH8B_wxdByWpvUYtqqal2XB6RVkG1CoHB6U1WJzbnYFDiwb3aGEdDa3Bm1oH12sQLTcNPp7r56m_00mHocSG97_zd7ICUXonA5fwKbPbkE2ZtMJGGVkEdctzQi4QzSwr9prnFYNk5hpmqVuqPQjNnfOJoMF22lUsrq_UfIN6lfSVyvQ7grB3X2mjMZYO3XO9w-U5iLx42qg29md3BP_ni5P4gy9ikTBlHxjLzAtPDlyYZmRdjAbGq7HprEQ7p64v4LU_guu0kvAkhBim3nMplWl8FreQD-CW20aZR0wq12t-KqDWeBywhvexKC3memmDwlHAv9q4Vo2ZK8KtK0CgX7u9J8wXbzdKv-nRnfF_2baTqlYoWUF2h5efl9-n0O6koAMAAA==)):
@@ -86,3 +117,28 @@ To run _side-effects_ when the component is mounted to the DOM, and when values
86
117
```
87
118
88
119
The function passed to `$effect` will run when the component mounts, and will re-run after any changes to the values it reads that were declared with `$state` or `$derived` (including those passed in with `$props`). Re-runs are batched (i.e. changing `color` and `size` in the same moment won't cause two separate runs), and happen after any DOM updates have been applied.
120
+
121
+
> [!LEGACY]
122
+
> In Svelte 4, you could use reactive statements for this.
0 commit comments