父组件向子组件通信
父组件通过Prop向子组件传递数据。
1 | <!--父组件--> |
子组件向父组件通信
子组件通过$emit触发事件向父组件发送数据。
1 | <!--子组件 child--> |
简单应用非父子组件通信
使用事件总线(Event Bus)进行通信。
使用一个空的 Vue 实例作为中央事件总线。
- 发布消息:bus.$emit(‘EventName’, data)
- 订阅消息:bus.$on(‘EventName’,(data)=>{console.log(data)})
1 | //eventbus.js |
复杂应用非父子组件通信
使用全局状态管理Vuex。
每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。Vuex 和单纯的全局对象有以下两点不同:
- Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
- 不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。