组件间的传值

组件之间的数据共享

1、父子关系

  • 父组件向子组件共享数据需要使用 自定义属性

    (数据定义在父组件,子组件用自定义属性接收父组件传来的数据)

  • //父组件
    <Father :msg="message" :user="username"></Father>
    data() {
      return {
        message: 'HELLO',
        username: '小明'
      }
    }
    
    //子组件
    //(不要修改props里面的值)
    <Son>接收父组件传过来的数据{{msg}}</Son>
    
    <script>
    
      export default  {
         props:['msg','user']
      }
      
     </script>
    
    

在这里插入图片描述

  • 子组件向父组件传值,需要使用 自定义事件

​ (子组件使用this.$emit( )触发自定义事件传递数据)

  • //子组件
    <script>
    
    export default {
      data() {
        return {
          num:0
        }
      },
      methods: {
        add() {
           this.num ++
           //修改num的值时,通过$emit()触发changNum这个事件来传递num这个          变量的值
           this.$emit('changeNum',this.num)
        }
      }
    }
    
    </script>
    
    
    //父组件
    <Father @changeNum="getNum"></Father>
    
    <script>
     
    export default {
       data() {
          return {
             //接收
             getNumFromSon: 0 
          }
       },
       methods: {
         //获取子组件传递过来的数据
         getNum(val) {
            this.getNumFromSon = val
         }
       }
    }
    
    </script>
    
    

在这里插入图片描述

2、兄弟关系

  • EventBus

  • EventBus使用步骤:

    • 创建eventBus.js模块,并向外共享一个Vue的实例对象
    • 在数据发送方,引用eventBus.js文件,用**bus.$emit(‘事件名称’,要发送的数据)**方法触发自定义事件来发送数据
    • 在数据接收方,引用eventBus.js文件,用**bus.$on(‘事件名称’,事件处理函数)**方法注册一个自定义事件来接收数据
  • //数据发送方
    import bus from '@/eventBus.js'
    
    <script>
     
     export default {
       data() {
         return {
           date: '2021-8-5'
         }
       },
       methods: {
          send() {
            bus.$emit('dateEvent',this.date)
          }
       }
     }
     
     </script>
     
     
     // eventBus.js文件
     import Vue from 'vue'
     //向外共享一个Vue的实例对象
     export default new Vue()
     
     
     //数据接收方
     import bus from '@/eventBus.js'
     
     <script>
     
     export default {
       data() {
         return {
           dateFrom:''
         }
       },
       created() {
          this.getDate()
       },
       methods: {
          getDate() {
            bus.$on('dateEvent',val=> {
               this.dateFrom = val
            })
          }
       }
     }
     
     </script>
    

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值