vue组件间通信

组件间通信

vue组件之间的通信方式包括父子通信、子父通信和非父子通信

父子间通信

<!-- 在父组件中使用子组件 -->
<!-- 在父组件中向子组件传递数据,需要在子组件上面添加属性,使其值等于要传递的数据 -->
<Child :childData="childData"></Child>
// 父组件
// 引入子组件
import Child from './Child'
export default {
  // 注册子组件
  components: {Child},
  data () {
    return {
      childData: '父组件中的数据'
    }
  }
}
// 子组件
// 子组件接受父组件以属性方式传递过来的值,需要使用props进行接受
export default {
  // childData即为在父组件中给子组件添加的属性名,值为数据类型,props中接受的数据等同于data中的数据,可以直接使用,且不能和data中的变量名相同
  props: {
    childData: String
  }
}

子父间通信

  • 通过发布者-监听着的方式进行子父间数据通信
<!-- 子组件 -->
<button @click="sendParent">向父组件传递数据</button>
// 子组件
export default {
  methods: {
    sendParent () {
      this.$emit("send:message", "要传递的数据")
    }
  }
}
<!-- 父组件 -->
<!-- 可接收子组件传递的数据 -->
<Child @send:message="sendMessage"></Child>
import Child from './Child'
export default {
  methods: {
    sendMessage (data) {
      console.log(data)
    }
  }
}

非父子通信

  • 以Vue实例作为中央时间主线
<!-- 新建一个bus.js -->
import Vue from 'vue'
export default new Vue()
import bus from '../../bus
// 发送组件
bus.$emit('send:menu', true)
import bus from '../../bus
// 接收组件
bus.$on('send:menu', (msg) => {
  if (msg) {
    console.log("接收数据成功")
  }
})

转载于:https://www.cnblogs.com/Yancyzheng/p/10549292.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值