vue组件传参方式

组件内的六种通信方式

父传子 props

在父组件中定义一个数据 msg:‘hello 李湘’

在模板中绑定这个属性 < Child :msg=‘msg’ >

在子组件使用props:[‘msg’] 接收数据

在模板中使用msg数据

代码展示:
父组件:
在这里插入图片描述
子组件:
在这里插入图片描述

子传父 $emit

在父组件方法中定义一个点击 自定义事件,
在子组件通过 $ emit接收这个自定义事件名,第二个参数是你想要传入修改的数据

代码示例:

父组件:
在这里插入图片描述

子组件:
在这里插入图片描述

$on/ $emit

先设置一个 空实例,作为公共组件
在a组件通过 $on(‘事件名’,想传的的数据),
在b组件通过 $emit()接收

回调函数(callback)

在父组件方法中定义一个changeMsg,它可以修改data中的msg

这时changeMsg可以作为另外一个props传递给Child(子组件),此时Child(子组件)就接收了msg和changeMsgFn

在子组件使用props接收msg和changeMsgFn

此时点击按钮的时候就可以执行changeMsgFn

代码示例:
父组件:
在这里插入图片描述
子组件:
在这里插入图片描述

$parent

在父组件定义一个msg数据

在子组件就可以通过$parent.msg访问到值

代码示例:

父组件:
在这里插入图片描述
子组件:
在这里插入图片描述

$children

在组件先定义一个数据 number:10

在父组件通过$children第0项(因为一个父组件可能会有很多个子组件,此目的为找到第一个子组件),然后把它的number修改成50

在父组件模板中点击按钮时触发自定义事件

从而修改子组件中number的值

代码示例:
父组件:
在这里插入图片描述
子组件:
在这里插入图片描述

provide + inject

有俩种方式
对象形式:

在父组件使用provide
在子组件使用inject接收数据

代码示例:
父组件:
在这里插入图片描述
子组件:

在这里插入图片描述

函数形式:
provide(){
return{
msg:this.msg
}
}

$ attrs

包含了父作用域中不作为 props接受的属性
在子组件通过v-bind = '$attrs’

在父组件里使用子组件,在子组件中使用孙组件 (三层嵌套)
在父组件中定义两个数据 name:‘李湘’,age:18
传递给子组件
在子组件中不去使用它,而是传递给孙组件
在子组件中 <grandChild v-bind=’$attrs’
通过v-bind绑定事件绑定 $attrs属性
这个 $attrs就包含了父组件的name和age
因此孙组件姐可以获取到父组件的name和age

代码示例:
父组件:
在这里插入图片描述
子组件:
在这里插入图片描述
孙组件:
在这里插入图片描述

$listenenrs

在父组件定义一个事件监听器,在子组件中通过$listeners点击这个事件监听器,就可以触发父组件中的事件监听函数
代码示例:
父组件:
在这里插入图片描述
子组件:
在这里插入图片描述
孙组件:
在这里插入图片描述

ref

ref可以把子组件注册起来
在父组件使用子组件child 这里面有一个ref属性
在方法中触发 this.$refs.childComp.age获取到这个实例
设置一个点击事件从而可以获取到子组件中的数据age,子组件中也可以定义一个改变事件,修改age的值

代码示例:

父组件:
在这里插入图片描述
子组件:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值