mirror of
https://github.com/sveltejs/svelte.git
synced 2024-11-24 00:07:30 +01:00
docs: add legacy callouts (#13428)
This commit is contained in:
parent
d87bf178c5
commit
56621a2b36
@ -40,6 +40,19 @@ class Todo {
|
||||
}
|
||||
```
|
||||
|
||||
> [!LEGACY]
|
||||
> In Svelte 4, state was implicitly reactive if the variable was declared at the top level
|
||||
>
|
||||
> ```svelte
|
||||
> <script>
|
||||
> let count = 0;
|
||||
> </script>
|
||||
>
|
||||
> <button on:click={() => count++}>
|
||||
> clicks: {count}
|
||||
> </button>
|
||||
> ```
|
||||
|
||||
## `$derived`
|
||||
|
||||
Derived state is declared with the `$derived` rune:
|
||||
@ -61,6 +74,24 @@ The expression inside `$derived(...)` should be free of side-effects. Svelte wil
|
||||
|
||||
As with `$state`, you can mark class fields as `$derived`.
|
||||
|
||||
> [!LEGACY]
|
||||
> In Svelte 4, you could use reactive statements for this.
|
||||
>
|
||||
> ```svelte
|
||||
> <script>
|
||||
> let count = 0;
|
||||
> $: doubled = count * 2;
|
||||
> </script>
|
||||
>
|
||||
> <button on:click={() => count++}>
|
||||
> {doubled}
|
||||
> </button>
|
||||
>
|
||||
> <p>{count} doubled is {doubled}</p>
|
||||
> ```
|
||||
>
|
||||
> This only worked at the top level of a component.
|
||||
|
||||
## `$effect`
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
> [!LEGACY]
|
||||
> In Svelte 4, you could use reactive statements for this.
|
||||
>
|
||||
> ```svelte
|
||||
> <script>
|
||||
> let size = 50;
|
||||
> let color = '#ff3e00';
|
||||
>
|
||||
> let canvas;
|
||||
>
|
||||
> $: {
|
||||
> const context = canvas.getContext('2d');
|
||||
> context.clearRect(0, 0, canvas.width, canvas.height);
|
||||
>
|
||||
> // this will re-run whenever `color` or `size` change
|
||||
> context.fillStyle = color;
|
||||
> context.fillRect(0, 0, size, size);
|
||||
> }
|
||||
> </script>
|
||||
>
|
||||
> <canvas bind:this={canvas} width="100" height="100" />
|
||||
> ```
|
||||
>
|
||||
> This only worked at the top level of a component.
|
||||
|
Loading…
Reference in New Issue
Block a user