Я смотрел видео, чтобы понять, как использовать шину событий для связи между братьями и сестрами, и в видео был родитель с некоторыми данными, которые были отправлены дочерним элементам в качестве подпорки, затем метод в одном из дочерних элементов изменил это prop и использовал шину событий, чтобы отправить ее другому ребенку.
Я подумал, какой смысл в опоре? Почему я не могу просто использовать собственные данные братьев и сестер? И вот что я сделал:
main. js
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
export const bus = new Vue() //Event Bus
new Vue({
render: h => h(App),
}).$mount('#app')
Приложение. vue
<template>
<div id="app">
<img alt="Vue logo" src="./assets/logo.png">
<ComponenteA></ComponenteA>
<ComponenteB></ComponenteB>
</div>
</template>
<script>
import ComponenteA from './components/ComponenteA.vue'
import ComponenteB from './components/ComponenteB.vue'
export default {
name: 'App',
components:{
ComponenteA,
ComponenteB
}
}
</script>
ComponentA. vue
<template>
<div>
<h1 @click="changeTitle">Componente A</h1>
</div>
</template>
<script>
import { bus } from '../main'
export default {
name: 'ComponenteA',
data(){
return{
title: ''
}
},
methods:{
changeTitle(){
this.title = 'Title emitted from A a B'
bus.$emit('titleChanged',this.title)
}
}
}
</script>
ComponentB. vue
<template>
<div>
<h1>Componente B -> {{title}}</h1>
</div>
</template>
<script>
import { bus } from '../main'
export default {
name: 'ComponenteB',
data(){
return{
title: ''
}
},
created(){
bus.$on('titleChanged', (payload) =>{
this.title = payload
})
}
}
</script>
Что-то не так с моим кодом? Есть ли причина для использования родительских данных, которые я не вижу?