Vue父子组件传值

Vue父子组件传值:有四种方式:props,ref,emit 和模板传递通信slot

通过props来传值:

静态传值就是直接通过props来传递
动态传值是通过v-bind来绑定一个要传递值的key,然后后面跟要传递的内容,不过这个内容是可以改变的
比如:

<input v-model="parentMsg"> 
<child v-bind:message="parentMsg"></child>

传递的值会跟着input里面输入的值改变而改变
组件可以为 props 指定验证要求。
prop 是一个对象而不是字符串数组时,它包含验证要求

通过ref来传值:

在父组件引用的子组件中采用ref=’要传递的值的key’
父组件中:

<zizujian ref=”msg”></zizujian>
Data(){
  Return{
    Message:’子组件’
  }
}
Mounted(){
  This.$ref.msg.getMsg(this.message)
}

子组件中:

<p>{{msg}}</p>
Data(){
    Return {
        Msg:””,
    }
},
Mounted(m){
    This.Msg=m
}  

这样就将父组件中的message中的内容传递到子组件中的msg变量中

emit是子组件向父组件的传值方式
$emit(‘eventName’)    
vm.$emit( eventName’, arg ) //触发当前实例上的事件

子组件可以使用 $emit 触发父组件的自定义事件

父组件:

<zizujian @getMessage=”getMsg”></zizujian>
Data(){
    Return{
        Message:””
    }
},
Methods(){
    getMsg(data){
        This.message=data
    }
}        

子组件:

Data(){
  Return{
    message:”hello world”
  }
},
Mounted(){
  This.$emit(‘getMessage’,this.message)
}
Slot:

父组件向子组件传递模板采用slot:
父组件中:

<child>
  <p>something</p>
</child>

子组件:

<template>
    <slot></slot>
</template>

如果父组件没传递模板,slot里面有内容的话,就会显示内容
如果有多个模板要进行传递,这需要在slot中通过命名(name)来区分:
父组件中:

<child>
  <p slot=’header’>something</p>
  <p slot=’footer’>something</p>
</child>

子组件:

<template>
  <slot name=’header’></slot>
  <slot name=footer></slot>
</template>
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值