Vue组件通信

2019-06-28  本文已影响0人  狻猊Cxx

从上到下(父传子)

// 父组件
<select-list :dataList="dataArr" @parentReceive="changeVal"/>
// 子组件
props: ['dataList']    

从下到上(子传父)

selectVal (val) {
      // 第一步
      this.$emit('parentReceive', val) // 第一个参数:自定义事件名称;第二个参数要传递的数据
}
<template>
    <select-list :dataList="dataArr" @parentReceive="changeVal"/>
 </template>

 <script>
     changeVal (val) {
      console.log(`我是子组件传递过来的数据${val}`)
    }  
 </script>

兄弟组件之间的传值

(1)在要传递数据的组件通过$emit(自定义事件名称,要传递的数据)

import bus from '../../main'
selectVal (val) {
      bus.$emit('reveive', val)
    }

(2)在目标组件通过on进行监听接收on('自定义事件名称', 回调函数)

import bus from '../../main'
bus.$on('reveive', val => {
      console.log(val)
      this.value = val
 })

(3)PS:emit &on都要挂载到Vue空实例上,而这个空实例要全局使用因此需要在main.js创建

let bus = new Vue()
export default bus
上一篇 下一篇

猜你喜欢

热点阅读