vuejs vue para métodos metodos method hacemos funciones example ejemplos dentro declaración data componentes agregar vuejs2 vue-component vue.js

vuejs2 - para - vuejs emit data



El método Vue.js se llama varias veces usando $ emit y $ on cuando solo debe llamarse una vez (1)

Estoy usando un bus para permitir que los componentes interactúen con otros componentes a través del método descrito en este enlace: https://forum.vuejs.org/t/create-event-bus-in-webpack-template/4546/2 .

Tengo un método que se llama en el gancho creado que utiliza el bus para emitir un evento.

created () { this.getReviewDeck() }, myMethod () { bus.$emit(''increment'') }

En otro componente (que está contenido en el componente anterior) adjunto el detector de eventos en el enlace creado como se muestra a continuación:

created () { bus.$on(''increment'', this.incrementCount) }, incrementCount () { console.log(''count incremented'') }

Si visito el componente la primera vez todo funciona correctamente y la consola registrará ''recuento incrementado'' una vez. Sin embargo, si dejo el componente y luego vuelvo a navegar, la próxima vez que se ''incremente el conteo'' se registrará dos veces, y si me voy y vuelvo, se registrará tres veces, etc.

No puedo entender exactamente qué está pasando o cuál es la mejor manera de resolver este problema, de modo que cada vez que voy al componente, el mensaje solo se registra una vez en lugar de varias veces.


Tuve que eliminar el controlador de eventos en destroy.

beforeDestroy () { EventBus.$off(''increment'', this.incrementCount) },