vue父子组件通信
Posted zpw-1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue父子组件通信相关的知识,希望对你有一定的参考价值。
1.父组件传递数据给子组件
父组件数据如何传递给子组件呢?可以通过props属性来实现
父组件: <parent> <child :child-msg="msg"></child> //这里必须要用 - 代替驼峰 </parent> data(){ return { msg: [1,2,3] }; }
子组件通过props来接收数据:
方式1: props: [‘childMsg‘] 方式2 : props: { childMsg: Array //这样可以指定传入的类型,如果类型不对,会警告 } 方式3: props: { childMsg: { type: Array, //传入的类型 default: [0,0,0] //这样可以指定默认的值 } }
2.子组件与父组件通信
子组件: <template> <div @click="testClick"></div> </template> methods: { testClick() { this.$emit(‘test‘,‘123‘); //$emit(even,value)even 是一个函数,value 是传给父组件的值 , 触发名为test方法, ‘123‘为向父组件传递的数据 } }
父组件接收: <div> <child @test="change" :msg="msg"></child> //监听子组件触发的test事件,然后调用change方法 </div> methods: { change(val) { this.msg = val; // val: 123 } }
3.非父子组件通信
如果2个组件不是父子组件那么如何通信呢?这时可以通过eventHub来实现通信. 所谓eventHub就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件. let Hub = new Vue(); //创建事件中心 组件1触发: <div @click="eve"></div> methods: { eve() { Hub.$emit(‘change‘,‘hehe‘); //Hub触发事件 } } 组件2接收: <div></div> created() { Hub.$on(‘change‘, () => { //Hub接收事件 this.msg = ‘hehe‘; }); }
转载:https://www.cnblogs.com/hai-cheng/p/8021982.html
以上是关于vue父子组件通信的主要内容,如果未能解决你的问题,请参考以下文章