Describe the problem
As of now, if we want to pass a Snippet as props to a component, it has to be without parameters, this is due to the Snippet props expecting a snippet function to be passed. if we want parameters on our Snippet function, it needs be nested inside the component as a child.
This process can get boring and boilerplatey very quickly, specially with more complex cases were different kinds of Snippets are used inside components.
Describe the proposed solution
Solution 1
It would be nice if Svelte let us pass parameters directly as props, using the example above, maybe:
// Option 1
<Chip label="Test" media={icon('blue')} />
or
// Option 2
<Chip label="Test" media={() => icon('blue')} />
or even
// Option 3
<Chip label="Test" media={(() => icon('blue'))()} />
Personally, Option 2 feels more natural as this is how we already pass functions on Svelte 5 using events such as onclick.
Solution 2
Some kind of new sintax for such cases might be interesting to think about.
<Chip label="Blue">
{@render icon('blue') on media} // where Chip must have a "media" prop, show an error if doesn't
</Chip>
Solution 3
Do nothing. There is an argument on using {#each} loops but it feels somewhat overkill for 3 or 4 components.
Importance
would make my life easier
Describe the problem
As of now, if we want to pass a
Snippetas props to a component, it has to be without parameters, this is due to theSnippetprops expecting a snippet function to be passed. if we want parameters on ourSnippetfunction, it needs be nested inside the component as a child.This process can get boring and boilerplatey very quickly, specially with more complex cases were different kinds of
Snippetsare used inside components.Describe the proposed solution
Solution 1
It would be nice if Svelte let us pass parameters directly as props, using the example above, maybe:
or
or even
Personally, Option 2 feels more natural as this is how we already pass functions on Svelte 5 using events such as
onclick.Solution 2
Some kind of new sintax for such cases might be interesting to think about.
Solution 3
Do nothing. There is an argument on using
{#each}loops but it feels somewhat overkill for 3 or 4 components.Importance
would make my life easier