Heim > Web-Frontend > js-Tutorial > From Svelte o Svelte Understanding Slots (Standard und benannt)

From Svelte o Svelte Understanding Slots (Standard und benannt)

Linda Hamilton
Freigeben: 2024-12-27 17:26:11
Original
219 Leute haben es durchsucht

From Svelte o Svelte Understanding Slots (default and named)

Es gibt viele Änderungen, die in Svelte 5 verwirrend sein könnten, weshalb ich versuche, meinen Lernprozess von Svelte 4 bis Svelte 5 zu dokumentieren.
Eine davon ist die Verwendung von Slots in Svelte 5. In <= Svelte 4 war der Prozess viel einfacher:

Standard-Slots

Parent.svelte (Standardslots, Svelte 4)

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




</p>
<p>Child.svelte (Standardslot, Svelte 4)<br>
</p>

<pre class="brush:php;toolbar:false"><slot />
Nach dem Login kopieren

In Svelte 5 müssen Sie zum Rendern des Slots die @render-Syntax verwenden, die Sie auch aus dem neuen $props():

übernehmen

Parent.svelte (Standardslots, Svelte 5)

<!-- same as svelte 4 -->
<Child>
<div>
// Your slot content
</div>
</Child>
Nach dem Login kopieren

Child.svelte (Standardslot, Svelte 5)

<script>
// destructure children from $props()
const { children } = $props()
</script>
<!-- render default slot here (with optional chaining just in case)-->
{@render children?.()}
Nach dem Login kopieren

Benannte Slots

Benannte Slots haben sich ebenfalls geändert und verwenden sowohl die #snippet- als auch die @render-Syntax:

Parent.svelte (benannte Slots, Svelte 4)

<Child>
<div slot="mySlot">
// Your slot content
</div>
</Child>
Nach dem Login kopieren

Child.svelte (benannter Slot, Svelte 4)

<slot name="mySlot" />
Nach dem Login kopieren

In Svelte 5 müssen Sie den Slot mit #snippet übergeben und dann die @render-Syntax verwenden, um den Slot zu rendern, die Sie auch aus dem neuen $props():

übernehmen

Parent.svelte (benannte Slots, Svelte 5)

<!-- same as svelte 4 -->
<Child>
{#snippet mySlot()}
<div>
// your slot content
</div>
{/snippet}
</Child>
Nach dem Login kopieren

Child.svelte (benannter Slot, Svelte 5)

<script>
// destructure children from $props()
const { mySlot } = $props()
</script>
<!-- render default slot here-->
{@render mySlot()}
Nach dem Login kopieren

Extras: Sie können Inhalte auch bedingt rendern, basierend darauf, ob ein Slot mit einem if-Block übergeben wird:

Child.svelte (benannter Slot, Svelte 5, bedingtes Rendern)

<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}
Nach dem Login kopieren

Ich werde weiterhin alle Änderungen dokumentieren, sobald ich auf sie stoße. Was halten Sie übrigens von Svelte 5? Ist die Verlängerung der Kompilierzeit, die Reduzierung der Build-Größe (für größere Projekte) und die zusätzlichen Funktionen die zusätzliche Komplexität wert?

Viel Spaß beim Hacken!

Das obige ist der detaillierte Inhalt vonFrom Svelte o Svelte Understanding Slots (Standard und benannt). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage