Skip to content

Commit 56240cb

Browse files
committed
Merge branch 'ts-docs' of https://github.com/sveltejs/svelte into ts-docs
2 parents 82dbdc4 + 4310452 commit 56240cb

File tree

29 files changed

+134
-191
lines changed

29 files changed

+134
-191
lines changed

.changeset/curly-dogs-breathe.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/early-hounds-float.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/modern-adults-lay.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: ensure transitions are applied to nested elements

.changeset/new-parrots-pay.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/rotten-cups-float.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/sour-feet-carry.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/wild-parents-begin.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.github/workflows/sync-request.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# https://github.com/sveltejs/svelte.dev/blob/main/apps/svelte.dev/scripts/sync-docs/README.md
12
name: Sync request
23

34
on:

documentation/docs/02-runes/05-$props.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,17 @@ References to a prop inside a component update when the prop itself updates —
9191
</button>
9292
```
9393

94-
Prop variables are not automatically deeply reactive. What happens when mutating one of their properties depends on what the parent passed in. For example if the parent passed a non-reactive POJO as a prop, setting a property of that object in the child will not cause the component to update ([demo](/playground/untitled#H4sIAAAAAAAAE3VPS07DMBC9yshCaiuqBLYhjoQ4Q1eEReJOVIMztuJJBbJ8d-IkEqXQ5bx53yCo6VEU4kCs2eBR7EWnDXpRvAbBXy79EjDhK_PZucyf0XDC2sbjf7iyxEg82YjSq0E7rmqqWffODgwvJ22O0A22h02Wz9cq3TzVVOY_CioXrm3fUbEMQdmRuICHGCGvpiDGTxYFDyPG_Y3Cl_6_K199bpQ2yBDWBhBBwp0brPPb3Z-u7chsCSwpo9WHDNsdyApCMslzODUeyAJ23WSUsMUymyfBvYTHmmKcI2e9LyBcUmKKWyKulr_Fb2Z_SHPIAQAA)):
94+
While you can temporarily _reassign_ props, you should not _mutate_ props unless they are [bindable]($bindable).
95+
96+
If the prop is a regular object, the mutation will have no effect ([demo](/playground/untitled#H4sIAAAAAAAAE3WQwU7DMBBEf2W1QmorQgJXk0RC3PkBwiExG9WQrC17U4Es_ztKUkQp9OjxzM7bjcjtSKjwyfKNp1aLORA4b13ADHszUED1HFE-3eyaBcy-Mw_O5eFAg8xa1wb6T9eWhVgCKiyD9sZJ3XAjZnTWCzzuzfAKvbcjbPJieR2jm_uGy-InweXqtd0baaliBG0nFgW3kBIUNWYo9CGoxE-UsgvIpw2_oc9-LmAPJBCPDJCggqvlVtvdH9puErEMlvVg9HsVtzuoaojzkKKAfRuALVDfk5ZZW0fmy05wXcFdwyktlUs-KIinljTXrRVnm7-kL9dYLVbUAQAA)):
9597

9698
```svelte
9799
<!--- file: App.svelte --->
98100
<script>
99101
import Child from './Child.svelte';
100-
101-
let object = $state({count: 0});
102102
</script>
103103
104-
<Child {object} />
104+
<Child object={{ count: 0 }} />
105105
```
106106

107107
```svelte
@@ -118,7 +118,7 @@ Prop variables are not automatically deeply reactive. What happens when mutating
118118
</button>
119119
```
120120

121-
However if the value passed in by the parent component is itself a deeply reactive state object, then it will be deeply reactive in the child, too ([demo](/playground/untitled#H4sIAAAAAAAAE3WQwU7DMBBEf2VlITUVVQLXkERC_YaeCIfE2aoujm3FGwqy_O_YcSug0KNnx7Nv1jHVjchKtlMkSOLANmwvJFpWvjhGnybOohD0s_PZmNy-o6So9Z3F_3SuFaGiEMMqyydhqGlVS2I0eiLYHoQcYD_pEVZ5sbzOX1dPwRaMEgl0f0ROUMOdpY4wc1zPikp48OvgqorvXFWlRJe-eCiawED4QaykaUa_udHl5-rfba4mN_pETHcB9RHVTNrY7C9gPxNpBVpxKfhb7bI11A24GFIUcBJSAu9mi0AHhKUo9Cj1CUjDbIbQP1rTpjzN72t4bJX3C8kSa8vLCZLFR4q0-eogr_4LN7sC9foBAAA=)):
121+
If the prop is a reactive state proxy, however, then mutations _will_ have an effect but you will see an [`ownership_invalid_mutation`](runtime-warnings#Client-warnings-ownership_invalid_mutation) warning, because the component is mutating state that does not 'belong' to it ([demo](/playground/untitled#H4sIAAAAAAAAE3WR0U7DMAxFf8VESBuiauG1WycheOEbKA9p67FA6kSNszJV-XeUZhMw2GN8r-1znUmQ7FGU4pn2UqsOes-SlSGRia3S6ET5Mgk-2OiJBZGdOh6szd0eNcdaIx3-V28NMRI7UYq1awdleVNTzaq3ZmB43CndwXYwPSzyYn4dWxermqJRI4Np3rFlqODasWRcTtAaT1zCHYSbVU3r4nsyrdPMKTUFKDYiE4yfLEoePIbsQpqfy3_nOVMuJIqg0wk1RFg7GOuWfwEbz2wIDLVatR_VtLyBagNTHFIUMCqtoZXeIfAOU1JoUJsR2IC3nWTMjt7GM4yKdyBhlAMpesvhydCC0y_i0ZagHByMh26WzUhXUUxKnpbcVnBfUwhznJnNlac7JkuIURL-2VVfwxflyrWcSQIAAA==)):
122122

123123
```svelte
124124
<!--- file: App.svelte --->
@@ -138,20 +138,23 @@ However if the value passed in by the parent component is itself a deeply reacti
138138
</script>
139139
140140
<button onclick={() => {
141-
// will cause the count below to update
141+
// will cause the count below to update,
142+
// but with a warning. Don't mutate
143+
// objects you don't own!
142144
object.count += 1
143145
}}>
144146
clicks: {object.count}
145147
</button>
146148
```
147149

148-
The fallback value of a prop not declared with `$bindable` is treated like a non-reactive POJO, and therefore also doesn't update the component when mutating its properties.
150+
The fallback value of a prop not declared with `$bindable` is left untouched — it is not turned into a reactive state proxy — meaning mutations will not cause updates ([demo](/playground/untitled#H4sIAAAAAAAAE3WQwU7DMBBEf2VkIbUVoYFraCIh7vwA4eC4G9Wta1vxpgJZ_nfkBEQp9OjxzOzTRGHlkUQlXpy9G0gq1idCL43ppDrAD84HUYheGwqieo2CP3y2Z0EU3-En79fhRIaz1slA_-nKWSbLQVRiE9SgPTetbVkfvRsYzztttugHd8RiXU6vr-jisbWb8idhN7O3bEQhmN5ZVDyMlIorcOddv_Eufq4AGmJEuG5PilEjQrnRcoV7JCTUuJlGWq7-YHYjs7NwVhmtDnVcrlA3iLmzLLGTAdaB-j736h68Oxv-JM1I0AFjoG1OzPfX023c1nhobUoT39QeKsRzS8owM8DFTG_pE6dcVl70AQAA))
149151

150152
```svelte
151153
<!--- file: Child.svelte --->
152154
<script>
153-
let { object = { count = 0 } } = $props();
155+
let { object = { count: 0 } } = $props();
154156
</script>
157+
155158
<button onclick={() => {
156159
// has no effect if the fallback value is used
157160
object.count += 1
@@ -160,7 +163,7 @@ The fallback value of a prop not declared with `$bindable` is treated like a non
160163
</button>
161164
```
162165

163-
In general, mutating props is discouraged, instead use callback props to make it easier to reason about state and changes to that state. If parent and child should share (and be allowed to mutate) the same object, then use the [$bindable]($bindable) rune.
166+
In summary: don't mutate props. Either use callback props to communicate changes, or — if parent and child should share the same object use the [`$bindable`]($bindable) rune.
164167

165168
## Type safety
166169

documentation/docs/03-template-syntax/05-await.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ Similarly, if you only want to show the error state, you can omit the `then` blo
6969
{/await}
7070
```
7171

72-
> [!NOTE] You can use `#await` to render dynamic components with the help of the `import()` function:
72+
> [!NOTE] You can use `#await` with [`import(...)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import) to render components lazily:
7373
>
7474
> ```svelte
75-
> {#await import('./Component.svelte') then Component}
76-
> <Component.default />
75+
> {#await import('./Component.svelte') then { default: Component }}
76+
> <Component />
7777
> {/await}
7878
> ```
7979

0 commit comments

Comments
 (0)