Criando um EventBus no Vue.js

Bruno Seco
2 min readAug 16, 2020

Event bus

Bom, sabemos o quanto é fácil trabalhar com componentes no Vue e comunicação entre eles.

Mas também precisamos de uma ajudinha quando queremos emitir um evento para toda nossa aplicação, como por exemplo uma notificação de forma global, sem ter que ficar implementando os componentes de notificação em todas as telas ou emitindo evento de componente filho para pai, e do pai para seu pai e assim sucessivamente

Esse então será um belo exemplo para utilizarmos um eventbus no Vue.

É bem simples e fácil de criar e utilizar, você poderá criar quantos eventos forem necessários (no nosso exemplo será só um) e emitir um evento com o nome desejado (no nosso caso será “show-notification”), vamos lá.. Ocódigo será esse:

Toda essa estrutura é a padrão do arquivo “main.js” que é gerado quando criamos um projeto no Vue, e o pedaço do código que cria nosso eventbus é essa.

Vue.prototype.$eventHub = new Vue();

Eu chamei de $eventHub, porque no dia não pensei no Bus rsrsrs.

E no mesmo arquivo main.js eu já fico escutando esse eventHub criado para o evento “show-notification” e sempre que emitido, eu chamarei algum plugin de notificação, no caso não implementei nenhum e você utilizar qual desejar.

Para chamar esse evento, você poderá chamar de qualquer componente Vue ou qualquer classe que também implemente/importe o Vue para dentro dela, no exemplo abaixo, estou chamando dentro de um componente aleatório

this.$eventHub.$emit('show-notification', {
text: "Seu registro foi alterado com sucesso"
})

Com isso, assim que eu chamar essa linha de código acima, irá emitir um evento de nome “show-notification” para dentro do meu “$eventHub” e todo lugar que estiver escutando como nos exemplos acima, serão notificados e realizará a ação que estiver implementada.

this.$eventHub.$on('show-notification', (data) => {
// Show global notification like toast or sweet alert })

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response