|
|
|
|
|
by leppr
2291 days ago
|
|
Slots are currently an unwieldy band-aid. https://github.com/sveltejs/svelte/issues/1037 (open since 2017) https://github.com/sveltejs/svelte/issues/2079 The simple usage of passing a component to a component, which almost every decently-sized project will make use of, has no convenient syntax, only workarounds: // parent.svelte
<script>
import Nested from './nested.svelte'
import Child from './child.svelte';
</script>
<Child>
<div slot="bar"> <-- Extra wrapper DOM node
<Nested foo="Foo"/>
</div>
</Child>
// child.svelte
<slot name="bar" {...data}/>
Passing down an element as a prop requires separating the component constructor and its data and manually re-conciliating the two in the child component every time, since components can't be rendered from functions. It works but it's unnecessary boilerplate. // parent.svelte
<script>
import Nested from './nested.svelte';
import Child from './child.svelte';
</script>
<Child nested={Nested} nestedData={{ foo: "Foo" }}/>
// child.svelte
<script>
let export Component;
let export componentData;
</script>
<Component {...componentData}/>
|
|