vue2 组件共享数据17 父子组件 子向父组件 兄弟组件
父子组件:
父只管定义数据和传数据
子只管接收数据和声明数据
父:
<hello :msg="message" :user="username"></hello> import hello from '@/components/HelloWorld.vue' data() { return { username: 'admin', message:'传值测试', } }, components:{ hello },
  
子:
{{msg}}={{user}}
props:['msg','user'],
  
子组件的值不建议修改,保持只读就好
子传父:
父组件:
<hello @fromCount="getCount"></hello>
data() {
    return {
      countSon:0,
    }
  },
  components:{
    hello
  },
methods: {
    getCount(Val){
      this.countSon = Val
    }
  },
子组件:
<p>组件{{count}}</p> <button @click="add">+1</button>
data() {
    return {
      count:0,
    }
  },
methods: {
    add(){
      this.count += 1
      this.$emit('fromCount',this.count)
    }
  },
兄弟组件:
 需要在兄弟组件之间创建一个eventBus的模块
 在发送方调用bus.$emit('事件名称',发送的数据)的触发自定义事件
 在接受数据方bus.$on('事件名称',事件处理函数)的方法注册一个自定义事件
 
发送方:
<template>
  <div class="hello">
    接收方
    <button @click="send">发送</button>
  </div>
</template>
<script>
import bus from './eventBus.js'
export default {
  data() {
    return {
      str:'C罗yyds'
    }
  },
  methods: {
    send(){
      bus.$emit('share',this.str)
    }
  },
}
</script>
中间件:
import Vue from 'vue'
export default new Vue()
接收方:
mystr:{{mystr}}
 data() {
    return {
      mystr:'',
    }
  },
  created() {
    bus.$on('share',(Val)=>{
      console.log('ke事件触发',Val);
      this.mystr = Val
    })
  },
    代码改变了我们,也改变了世界

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号