总结:vue模式下工作时比较常用的解决组件之间数据交流问题
- 通过
router传递参数,同一路由下的页面通用,使用于绝大多数场景,使用频率最高this.$router.push({path: 'xx', params: {共用的参数}, query:{共用的参数}}) - 通过vuex,使用场景于多组件混合,组件间相互依赖又共同依赖,页面功能耦合性高,实际场景:保险录入系统:保险信息流程录入, 医疗系统:处方信息录入。需要使用一个大的store属性来存储每一个页面信息,最后发送到服务器
- 通过eventbus, 原理:新建一个Vue实例,通过 vm._event来存储所有数据,关键api:
$on: function(key, fn){}, 订阅 $emit: function(key, params), 发布 即 订阅者/发布者 模式 ps:可以diy一个简易的store - provide/inject, 可以小范围使用,不建议过多使用,否则会导致数据追踪困难,代码可阅读性下降
原理:父组件注册 provide, vm._provide 读取 子组件注册 inject, 通过递归循环父组件,获取数据,并进行监听(observer)