Vue中的组件通信的用法(个人理解笔记)

一 先要找到组件关系(Vue 是通过改变数据来改变相应的元素的,所以我们不管改变谁都要经过数据,通过数据来改变相应的元素)
归根到底就是围绕数据做的一些活动

二 根据组件关系来选择通信方法
  1 父子通信
    a) 在子组件中添加props属性例子
      {
        props: ['自定义prop名字(1)']
//意思是打开一个接口让父元素给其传值(父元素给子元素传值)
      }

例子:

 

     props:{

             nums:Number

       }


    b) 在子组件模板中直接使用prop(像使用data一样)例如:({{'自定义prop名字(1)'}})
    c) 在父组件的组件模板中找到子组件标签,添加属性 
      <子组件标签 :自定义prop名字(1)="父组件data中的值(是前面for循环遍历的数据,就如同(comment定义的data值 in comments数据))"></子组件标签>

  2 子父通信
    a) 在子组件中找到对应的元素添加相关事件就是添加点击或者其他事件例如(@click=send这是函数名),在事件函数中触发这个已经定义好的自定义事件
      {
        methods: {
          函数名 () {

            this.$emit('自定义事件名(2)', 数据(就是把子元素上的值拷贝付给一个对象Object.assign({},this.comment)))
          }
        }
      }

     孩子传值,父亲来接收$emit是发出数据的意思

    b) 在父组件methods中添加函数
      {
        methods: {
          函数(3) (data) {

            // data就是$emit传来的数据
            把子元素$emit传来的数据拷贝到父元素上
            例如:this.comments(这是传来的数据).splice(index,1)做删除事件
          }
        }
      }

    c) 在父组件组件模板中找到子组件标签添加自定义事件

    <子组件标签 @自定义事件名(2)这是子元素上的函数名="父组件中的函数名(3)"></子组件标签>

    先是子元素上的函数名,再是父元素上的函数名,就是为了让子元素与父元素产生关联,就是让子元素上的函数来触发父元素上的事件

     

  3 非父子通信
    a) 创建一个公共的实例 (选一个即可)
      const bus = new Vue()
      const EventHub = new Vue()

    b) 在发送数据的组件中对应的元素上添加事件
      @click="函数名(5)"  // 函数中触发自定义事件
      {
        methods: {
          函数名5() {
            bus.$emit('自定义事件名(4)', 数据
(例如:Object.assign({},this.comment))
          }
        }
      }
 
  c) 在接收数据的组件中添加created,然后监听事件的触发
      created () {
        bus.$on('自定义事件名(4)', (data) => {
          // data就是传来的数据
        })
      }

    
三 结束

  想要修改那个组件中的data,就在哪个组件中设置$on() 监听即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值