Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

564
Vistas
vuejs 3: declarar un evento de emisión en un componente secundario a través de la opción de emisión

Usando Vue 3.2 y tengo la impresión de que sigo la documentación

Estoy enviando una matriz de objetos a un componente secundario y, a cambio, estoy tratando de emitir un evento al componente principal para que un objeto (identificado por id) se elimine de la matriz.

 // parent <template> <TheAccountLines :lines=recurrents_credits @goaway(id)="goaway(id)" /> </template> <script setup> import { find } from "lodash" // this doesn't get called at all, just putting it here to show that the function exists. const goaway = (id) => { var line = find (state.accounts, {id:id}) console.log(line) } </script>
 // child component <template> <div v-for="line in lines" :key="line.id"> <span @click="goaway(line.id)" >X</span> {{ line.foo) }} {{ line.bar}} </div> </template> <script setup> const props = defineProps({ 'lines': Array)} const emit = defineEmits(['goaway']) const goaway = (id) => emit('goaway', id) </script>

Al cargar la página, recibo este mensaje en la consola: Los oyentes de eventos extraños que no emiten (goaway (id)) se pasaron al componente pero no se pudieron heredar automáticamente porque el componente representa fragmentos o nodos raíz de texto. Si el oyente está destinado a ser solo un oyente de eventos personalizado de componente, declárelo usando la opción "emite".

Entiendo que la opción "emite" es defineProps . Pero debo estar equivocado.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Creo que el problema es: debes usar @goaway , pero no @goaway(id) .

Parte de la plantilla:

 <template> <!--- THIS IS WRONG, SEE UPDATE BELOW --> <TheAccountLines :lines="recurrents_credits" @goaway(id)="goaway(id)" /> </template>

Por cierto, puedes usar onGoaway prop instand @goaway :

 // parent component <template> <TheAccountLines :lines="recurrents_credits" @goaway="goaway" /> </template> // child component <script setup> const props = defineProps(['onGoaway']) const emitDelete = (id) => { props.goaway(id) } </script>
about 4 years ago · Juan Pablo Isaza Denunciar

0

Como siempre, después de horas de búsqueda, encuentro la respuesta 5 minutos después de hacer la pregunta aquí. No eliminaré la pregunta (a menos que la moderación prefiera que lo haga).

El error estaba en el padre: no use los parámetros en la emisión:

documentación

 <TheAccountLines :lines=recurrents_credits @goaway="goaway" />
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda