vue重孙组件向祖爷爷组件通信方法
时间: 2023-08-26 15:05:09 浏览: 94
Vue 之孙组件向爷组件通信的实现
在 Vue 中,如果你想要让一个重孙组件向祖爷爷组件通信,可以使用事件总线(Event Bus)或者 Vuex 状态管理库。
1. 使用事件总线(Event Bus):
事件总线是一个全局 Vue 实例,可以用来在任何组件之间传递消息。可以在 main.js 中创建一个事件总线:
```javascript
Vue.prototype.$eventBus = new Vue()
```
在祖爷爷组件中,可以监听事件:
```javascript
mounted() {
this.$eventBus.$on('eventName', data => {
console.log(data)
})
}
```
在重孙组件中,可以触发事件:
```javascript
this.$eventBus.$emit('eventName', data)
```
2. 使用 Vuex 状态管理库:
Vuex 是 Vue 官方推荐的状态管理库,可以用来统一管理组件之间共享的状态。在祖爷爷组件中,可以定义一个 state:
```javascript
const store = new Vuex.Store({
state: {
data: null
},
mutations: {
setData(state, data) {
state.data = data
}
}
})
```
在重孙组件中,可以通过调用 mutations 来改变祖爷爷组件中的 state:
```javascript
this.$store.commit('setData', data)
```
在祖爷爷组件中,可以通过计算属性来获取 state:
```javascript
computed: {
data() {
return this.$store.state.data
}
}
```
阅读全文