Directiva use:action în Svelte: Atașarea de Comportamente Personalizate pe Elemente DOM în Svelte & SvelteKit

Ghid complet pentru Svelte Actions: crearea acțiunilor cu use:actiune, manipularea nodurilor native DOM, curățarea listener-ilor cu destroy și detectarea evenimentelor click-outside.

Sintaxă
<div use:clickOutside={() => inchideMeniu()}>

O Acțiune Svelte (Action) este o funcție simplă atașată direct unui element HTML la montare prin directiva use:numeActiune. Ea oferă acces direct la nodul DOM nativ, permițând integrarea oricărei biblioteci JavaScript externe (cum ar fi Chart.js, Tippy.js sau SortableJS) într-un mod modular și curat.

Implementarea unei acțiuni clasice: ‘clickOutside’
// clickOutside.ts
export function clickOutside(node: HTMLElement, onClicInAfara: () => void) {
    const ascultator = (event: MouseEvent) => {
        // Verificăm dacă click-ul a avut loc în afara nodului:
        if (!node.contains(event.target as Node)) {
            onClicInAfara();
        }
    };

    document.addEventListener('click', ascultator, true);

    return {
        // Se apelează automat când elementul este eliminat din DOM:
        destroy() {
            document.removeEventListener('click', ascultator, true);
        }
    };
}
Utilizarea acțiunii într-o componentă modală
<script lang="ts">
    import { clickOutside } from './clickOutside';
    let esteDeschis = $state(true);
</script>

{#if esteDeschis}
    <div class="modal" use:clickOutside={() => (esteDeschis = false)}>
        <h3>Fereastră Dialog</h3>
        <p>Un click oriunde în afara acestui chenar mă va închide automat!</p>
    </div>
{/if}
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Directiva use:action în Svelte: Atașarea de Comportamente Personalizate pe Elemente DOM

Ai o nelămurire despre utilizarea comenzii Directiva use:action în Svelte: Atașarea de Comportamente Personalizate pe Elemente DOM sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.