Skip to content
The translation is synced to the docs on of which the commit hash is e0f492e.

$listeners removido
rutura

Visão Geral

O objeto $listeners foi removido na Vue 3. Os ouvintes de evento agora são parte de $attrs:

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

Sintaxe da 2.x

Na Vue 2, podemos acessar os atributos passados aos nossos componentes com this.$attrs, e os ouvintes de evento com this.$listeners. Em combinação com inheritAttrs: false, permitem o programador aplicar estes atributos e ouvintes à algum outro elemento ao invés do elemento de raiz:

html
<template>
  <label>
    <input type="text" v-bind="$attrs" v-on="$listeners" />
  </label>
</template>
<script>
  export default {
    inheritAttrs: false
  }
</script>

Sintaxe da 3.x

No DOM virtual da Vue 3, os ouvintes de evento agora são apenas atributos, prefixados com on, e como tais são parte do objeto $attrs, então $listeners foi removido:

vue
<template>
  <label>
    <input type="text" v-bind="$attrs" />
  </label>
</template>
<script>
export default {
  inheritAttrs: false
}
</script>

Se este componente recebesse um atributo id e um ouvinte v-on:close, o objeto $attrs agora parecer-se-á com isto:

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

Estratégia de Migração

Remover todos os usos de $listeners.

Opção da Construção de Migração: INSTANCE_LISTENERS

Consulte também