Maison > interface Web > js tutoriel > De Svelte o Svelte Understanding Slots (par défaut et nommé)

De Svelte o Svelte Understanding Slots (par défaut et nommé)

Linda Hamilton
Libérer: 2024-12-27 17:26:11
original
280 Les gens l'ont consulté

From Svelte o Svelte Understanding Slots (default and named)

Il y a beaucoup de changements qui pourraient prêter à confusion dans Svelte 5, c'est pourquoi j'essaie de documenter mon processus d'apprentissage de Svelte 4 à Svelte 5.
L'un d'eux utilise des emplacements dans Svelte 5. C'était un processus beaucoup plus simple dans <= Svelte 4 :

Emplacements par défaut

Parent.svelte (emplacements par défaut, svelte 4)

<Child>
<div>
// Your slot content
</div>
</Child>




</p>
<p>Child.svelte (emplacement par défaut, svelte 4)<br>
</p>

<pre class="brush:php;toolbar:false"><slot />
Copier après la connexion

Dans Svelte 5, vous devez utiliser la syntaxe @render pour restituer l'emplacement, que vous prenez également du nouveau $props() :

Parent.svelte (emplacements par défaut, svelte 5)

<!-- same as svelte 4 -->
<Child>
<div>
// Your slot content
</div>
</Child>
Copier après la connexion

Child.svelte (emplacement par défaut, svelte 5)

<script>
// destructure children from $props()
const { children } = $props()
</script>
<!-- render default slot here (with optional chaining just in case)-->
{@render children?.()}
Copier après la connexion

Emplacements nommés

Les emplacements nommés ont également changé, en utilisant à la fois les syntaxes #snippet et @render :

Parent.svelte (emplacements nommés, svelte 4)

<Child>
<div slot="mySlot">
// Your slot content
</div>
</Child>
Copier après la connexion

Child.svelte (emplacement nommé, svelte 4)

<slot name="mySlot" />
Copier après la connexion

Dans Svelte 5, vous devez passer le slot avec #snippet, puis utiliser la syntaxe @render pour restituer le slot, que vous prenez également du nouveau $props() :

Parent.svelte (emplacements nommés, svelte 5)

<!-- same as svelte 4 -->
<Child>
{#snippet mySlot()}
<div>
// your slot content
</div>
{/snippet}
</Child>
Copier après la connexion

Child.svelte (emplacement nommé, svelte 5)

<script>
// destructure children from $props()
const { mySlot } = $props()
</script>
<!-- render default slot here-->
{@render mySlot()}
Copier après la connexion

Extras : vous pouvez également restituer le contenu de manière conditionnelle en fonction du fait qu'un emplacement est passé avec un bloc if :

Child.svelte (emplacement nommé, svelte 5, rendu conditionnel)

<script>
// destructure children from $props()
const { mySlot } = $props()
</script>
{#if mySlot}
<p>My Slot Section is rendered here</p>
<!-- render default slot here-->
{@render mySlot()}
{/if}
Copier après la connexion

Je continuerai à documenter tous les changements au fur et à mesure que je les rencontrerai. Au fait, que pensez-vous de Svelte 5 ? L'augmentation du temps de compilation, la réduction de la taille de la construction (pour les projets plus importants) et les fonctionnalités supplémentaires valent-elles la complexité supplémentaire ?

Bon piratage !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal