vue中组件间相互通信传值的方法有哪些
这篇文章主要讲解了"vue中组件间相互通信传值的方法有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"vue中组件间相互通信传值的方法有哪些"吧!
vue中组件之间相互通讯传值的方式
我们在使用vue进行项目开发的时候为了更好地管理项目,我们会把每个功能封装成一个个的组件,在使用的时候直接引入并且调用组件来实现代码的复用。
我们在封装组件的时候经常会留有一些预留的接口,供使用的时候调用和传入不同的数据,这个时候我们就涉及到了组件之前的相互传值的问题。
我这里总结了在vue中组件之前相互传值的方法:
1、子组件和父组件通讯,通过调用父组件给组件自定义属性值来实现
我是父组件:
这是我自己的数据{{num}}
我是子组件:
这是通过props接收父级组件传过来的数据{{ pNum}}
这是通过组件中的$attrs对象获取父级组件传过来的数据{{ $attrs['p-num2']}}
这是通过组件中的$attrs对象获取父级组件传过来的数据{{ topNum }}
上边的代码展示了两种不同形式的组件之间的通讯方式,父组件传值方式相同,子组件获取操作方式不同
1.props/$emit
组合方式:子组件通过定义props值拿到父组件传给子组件的属性来获取;子组件通过使用$emit方法调用父组件的方法;
2.$attrs/$listeners
组合方式:子组件可以通过$attrs属性中的值拿到父组件传给子组件的属性值,它里边存储的是props之外的属性值;
3.$parent
方法获取父组件中的数据和方法
2、父组件主动获取子组件数据
这是获取的子组件childA的数据:{{childA_num}}
这是获取的子组件childB的数据:{{childB_num}}
1.ref/$refs
方式,通过给引入的组件定义一个ref
属性,然后就可以通过$refs
结合该属性值得到当前组件的实例
2.ref/$children
属性,给组件定义ref
值后,当前组件实例中会在this.$children
中拿到所有定义了ref
的组件数组,我们在通过下标进行获取某个子组件的方法后者属性值。
3、使用provide/inject方法实现
{{parentData.num}}
这种方式适合层级比较深的组件传值,这里的基本原理是,通过给祖先组件配置provide
属性,然后把想要传给后代组件的属性值,进行存储;
然后在后代组件中,那个需要拿到传播的数据,可以给组件本身配置injuct
属性,来接收想要监听的数据值;
然后就可以进行通信了
4、使用事件总线
此方发可以在任意组件中进行监听当前定义的方法。来实现,组件间相互通信
import Vue from 'vue';// 这里从创建了一个新的vue实例对象export const EventBus = new Vue();
事件总线的调用方式是:
1.定义一个全局的vue
示例并导出;
2.然后在需要监听某个事件的组件中引入event-bus
3.给当前的组件在created
方法中增加方法
4.然后子组件可以通过引入event-bus
文件然后通过EventBus.$emit
方式执行监听的时间方法
5、vuex\localStorage\sessionStorage
还可以使用Vuex、本地存储等方式来实现全局公用。
感谢各位的阅读,以上就是"vue中组件间相互通信传值的方法有哪些"的内容了,经过本文的学习后,相信大家对vue中组件间相互通信传值的方法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!