# $listeners supprimé
breaking

# Vue d'ensemble

L'objet $listeners a été supprimé dans Vue 3. Les écouteurs d'événements font maintenant partie de $attrs :

{
  text: 'this is an attribute',
  onClose: () => console.log('close Event triggered')
}
1
2
3
4

# Syntaxe 2.x

Dans Vue 2, vous pouvez accéder aux attributs passés à vos composants avec this.$attrs, et aux écouteurs d'événements avec this.$listeners. En combinaison avec inheritAttrs : false, ils permettent au développeur d'appliquer ces attributs et listeners à un autre élément au lieu de l'élément racine :

<template>
  <label>
    <input type="text" v-bind="$attrs" v-on="$listeners" />
  </label>
</template>
<script>
  export default {
    inheritAttrs: false
  }
</script>
1
2
3
4
5
6
7
8
9
10

# Syntaxe 3.x

Dans le DOM virtuel de Vue 3, les écouteurs d'événements sont maintenant juste des attributs, préfixés par on, et en tant que tels font partie de l'objet $attrs, donc $listeners a été supprimé.

<template>
  <label>
    <input type="text" v-bind="$attrs" />
  </label>
</template>
<script>
export default {
  inheritAttrs: false
}
</script>
1
2
3
4
5
6
7
8
9
10

Si ce composant a reçu un attribut id et un écouteur v-on:close, l'objet $attrs ressemblera maintenant à ceci :

{
  id: 'my-input',
  onClose: () => console.log('close Event triggered')
}
1
2
3
4

# Stratégie de migration

Supprimez tous les usages de $listeners.

# Voir aussi

Deployed on Netlify.
Dernière Mise-à-jour: 11/12/2021, 4:52:57 AM