vue中组件间的通信

vue中组件间通信

1. 父组件向子组建通信

   <body>
      <son v-bind:sonName="name"></son>
      <script>
           Vue.component('son',{
		       props:["sonName"],
		       template:`<div>{{sonName}}</div>`
		    })
		    let vue = new Vue({
		         el:'#app',
		         data:{
		             name:'lili'
		         }
		    })
      </script>
   </body>

在上边的代码中,首先父组件里边的数据名,在html中使用子组件需要使用v-bind(:)键是子组件中props中对应的数据名,值是父组件中的数据名

2. 子组件向父组件通信

<body>
      <son v-on:send="getInfo"></son>
      <script>
           Vue.component('son',{
		       template:`<button @click ='toParent'>向父组件传递信息</button>`,
		       data:function(){
                   return {
                      info:'我是子组件的信息'
                   }
               },
               methods:{
                  toParent(){
                      this.$emit("send",this.info)
                  }
               }
		    })
		    let vue = new Vue({
		         el:'#app',
		         data:{
		             infos:'lili'
		         },
		         methods:{
                    getInfo:function(d){
                       this.infos = d
                    }
                 }
		    })
      </script>
   </body>

子组件向父组件传递信息大致分为三个步骤
1.子组件的一个点击事件中使用this.$emit(‘数据名’,传递的数据)将自己的数据传递出去
2.在html中使用子组件的地方使用v-on(@)键是数据名,值是父组件中接收数据的函数名
3.在父组件的methods中定义一个方法接收子组件传递来的数据

3. 任意组件间进行通信

<body>
      <son></son>
      <script>
          var bus = new Vue()
          Vue.component('son',{
		       template:`<button @click ='toParent'>向父组件传递信息</button>`,
		       data:function(){
                   return {
                      info:'我是子组件的信息'
                   }
               },
               methods:{
                  toParent(){
                      bus.$emit("send",this.info)
                  }
               }
		    })
		    new Vue({
		       el:'#app',
		       data:{
		          infos:''
		       }
		       mounted:function(){
		          bus.$on('send',(d)=>{
		             this.infos = d
		          })
		       }
		    })
      </script>
   </body>

任意组件间通信是不管是不是父子组件都可以进行通信
1. 定义一个空的vue实例作为传递介质 var bus = new Vue()
2. 在需要传递出去数据的组件中有一个触发事件,触发事件中使用bus. e m i t ( " 传 递 名 " , 传 递 数 据 ) 3. 在 接 收 的 组 件 的 m o u n t e d 中 使 用 b u s . emit("传递名",传递数据) 3. 在接收的组件的mounted中使用bus. emit("",)3.mounted使bus.on(“传递名”,d =>{接收传递过来的数据d})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值