跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Vue.js组件通信实例分享

因为对 vue.js 很感兴趣,而且平时工作的技术栈也是vue.js,这几个月花了些时间研究学习了一下vue.js源码,并做了总结与输出。组件 (component) 是 vue.js 最强大的功能之一。组件可以扩展 html 元素,封装可重用的代码。下面通过本文给大家分享vue.js组件通信的几种姿势,感兴趣的朋友一起看看吧。 写在前面 可能会有理解存在偏差的地方,欢迎提issue指出,共同学习,共同进步。 什么是Vue组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展。 立即学习 “ 前端免费学习笔记(深入) ”; Vue组件间通信 父组件向子组件通信 方法一:props 使用 props ,父组件可以使用props向子组件传递数据。 父组件vue模板father.vue
子组件vue模板child.vue
方法二 使用$children 使用 $children 可以在父组件中访问子组件。 子组件向父组件通信 方法一:使用 vue事件 父组件向子组件传递事件方法,子组件通过$emit触发事件,回调给父组件。 父组件vue模板father.vue
子组件vue模板child.vue
方法二: 通过修改父组件传递的props来修改父组件数据 这种方法只能在父组件传递一个引用变量时可以使用,字面变量无法达到相应效果。因为饮用变量最终无论是父组件中的数据还是子组件得到的props中的数据都是指向同一块内存地址,所以修改了子组件中props的数据即修改了父组件的数据。 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更 下载 但是并不推荐这么做,并不建议直接修改props的值,如果数据是用于显示修改的,在实际开发中我经常会将其放入data中,在需要回传给父组件的时候再用事件回传数据。这样做保持了组件独立以及解耦,不会因为使用同一份数据而导致数据流异常混乱,只通过特定的接口传递数据来达到修改数据的目的,而内部数据状态由专门的data负责管理。 方法三:使用$parent 使用 $parent 可以访问父组件的数据。 非父子组件、兄弟组件之间的数据传递 非父子组件通信,Vue官方推荐 使用一个Vue实例作为中央事件总线 。 Vue内部有一个事件机制,可以参考 源码 。 $on方法用来监听一个事件。 $emit用来触发一个事件。
/*新建一个Vue实例作为中央事件总嫌*/ let event = new Vue(); /*监听事件*/ event.$on('eventName', (val) => { //......do something }); /*触发事件*/ event.$emit('eventName', 'this is a message.');
多层级父子组件通信: 在Vue1.0中实现了$broadcast与$dispatch两个方法用来向子组件(或父组件)广播(或派发),当子组件(或父组件)上监听了事件并返回true的时候会向爷孙级组件继续广播(或派发)事件。但是这个方法在Vue2.0里面已经被移除了。 之前在学习饿了么的开源组件库 element 的时候发现他们重新实现了broadcast以及dispatch的方法,以mixin的方式引入,具体可以参考 《说说element组件库broadcast与dispatch》 。但是跟Vue1.0的两个方法实现有略微的不同。这两个方法实现了向子孙组件事件广播以及向多层级父组件事件派发的功能。但是并非广义上的事件广播,它需要指定一个commentName进行向指定组件名组件定向广播(派发)事件。 其实这两个方法内部实现还是用到的还是$parent以及$children,用以遍历子节点或是逐级向上查询父节点,访问到指定组件名的时候,调用$emit触发指定事件。 复杂的单页应用数据管理 当应用足够复杂情况下,请使用 vuex 进行数据管理。 相关推荐: Vue 兄弟组件通信的方法 vue中的event bus非父子组件通信详解 深入探讨Vue.js组件和组件通信

相关文章