I have problems binding to nested after migrating from svelte4 to svelte5 I have a nested object that i want to manipulate in Svelte JS why do i need to create the Outer? Link to see Svelte Playground
<script>
import { writable } from "svelte/store"
import Toggle from "./Toggle.svelte"
import OuterToggle from "./OuterToggle.svelte"
let condition = $state({name: "app"});
let store = writable({data: {enabled : true}})
</script>
<br>
Not working
{JSON.stringify($store)}- {$store.data.enabled}
<Toggle bind:data={$store.data}></Toggle><br> // Works in svelte4
<br>
Working <OuterToggle bind:data={$store}></OuterToggle>
the first one has binding that works but the other does not why is that
Toggle:
<script>
let {data = $bindable({enabled:true})} = $props()
function change(e) {
data.enabled = e.target.checked
}
</script>
<input type="checkbox" checked={data.enabled} onchange={change}>
OuterToggle:
<script>
import Toggle from "./Toggle.svelte"
let {data = $bindable({data :{enabled:true}})} = $props()
</script>
{JSON.stringify(data)}
<Toggle bind:data={data.data}></Toggle>