多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[链接](http://www.bslxx.com/m/view.php?aid=2220) ### 组件间有哪些通信方式? * 父子组件通信 父->子`props`,子->父 `$on、$emit` 获取父子组件实例 `$parent、$children` `Ref` 获取实例的方式调用组件的属性或者方法 `Provide、inject` 官方不推荐使用,但是写组件库时很常用 * 兄弟组件通信 `Event Bus` 实现跨组件通信 `Vue.prototype.$bus = new Vue` `Vuex` * 跨级组件通信 `Vuex` `$attrs、$listeners` `Provide、inject` 尽量不要通过$parent来访问父组件 - 子组件应该尽量避免直接访问父组件的数据,因为这样耦合度太高了。 - 如果我们将子组件放在另外一个组件之内,很可能该父组件没有对应的属性,往往会引起问题。 - $parent直接修改父组件的状态,父组件中的状态将变得飘忽不定,很不利于调试和维护。 ### 为什么子组件不可以修改父组件传递的Prop?(为什么vue提倡单向数据流) 由于`vue`提倡单向数据流,即父级`props`的更新会流向子组件,但反过来则不行。这是为了**防止意外的改变父组件的状态**,使得应用的数据流变得难以理解。如果破坏了单项数据流,当应用复杂时,debug的成本将会非常高