En mode runes, les gestionnaires d'évènements sont fournis comme n'importe quel attribut ou prop. En mode legacy, il faut utiliser la directive `on:` : ```svelte ``` Les gestionnaires peuvent être déclarés de manière inline sans pénaliser les performances : ```svelte ``` Vous pouvez ajouter des _modificateurs_ aux gestionnaires d'évènement d'éléments grâce au caractère `|`. ```svelte
``` Les modificateurs suivants sont disponibles : - `preventDefault` — appelle `event.preventDefault()` avant d'exécuter le gestionnaire - `stopPropagation` — appelle `event.stopPropagation()`, empêchant l'évènement d'atteindre l'élément suivant - `stopImmediatePropagation` — appelle `event.stopImmediatePropagation()`, empêchant les autres gestionnaires du même évènement d'être exécutés - `passive` — améliore la performance du défilement pour les évènements touch/wheel (Svelte l'ajoute automatiquement lorsque cela ne pose pas de problème) - `nonpassive` — définit explicitement `passive: false` - `capture` — déclenche le gestionnaire pendant la phase de _capture_ plutôt que pendant la phase de _bubbling_ - `once` — supprime le gestionnaire après sa première exécution - `self` — ne déclenche le gestionnaire que si `event.target` est l'élément lui-même - `trusted` — ne déclenche le gestionnaire que si `event.isTrusted` vaut `true`. C'est-à-dire sir l'évènement est déclenché par une action de l'utilisateur Les modificateurs peuvent être chaînés, par ex. `on:click|once|capture={...}`. Si la directive `:on` est utilisée sans valeur, le composant va _relayer_ l'évènement, ce qui signifie qu'un composant parent de celui-ci peut écouter cet évènement. ```svelte ``` Il est possible d'avoir plusieurs gestionnaires d'évènement pour le même évènement : ```svelte ``` ## Évènements de composant [!VO]Component events Les composants peuvent générer des évènemnts en créant un _dispatcher_ lors de leur initialisation : ```svelte ``` `dispatch` crée un [`CustomEvent`](https://developer.mozilla.org/fr/docs/Web/API/CustomEvent). Si un deuxième argument est fourni, il devient alors la propriété `detail` sur l'objet de l'évènement. Un composant parent de ce composant peut alors écouter les évènements que ce dernier émet : ```svelte n -= 1} on:increment={() => n += 1} />

n : {n}

``` Les évènements de composants ne "bubblent" pas — un composant parent peut uniquement écouter les évènements de ses enfants directs. Mis à part `once`, les modificateurs ne sont pas applicables sur les gestionnaires d'évènement de composant. > [!NOTE] > Si vous prévoyez une éventuelle migration vers Svelte 5, utilisez plutôt des props de callback > pour vos gestionnaires d'évènement. Cela facilitera votre migration, puisque > `createEventDispatcher` est déprécié : > > ```svelte > > > > > > ```