Vue父子组件传值

Posted buries

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue父子组件传值相关的知识,希望对你有一定的参考价值。

 Vue父子组件传值:有四种方式:propsrefemit 和模板传递通信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>

 

以上是关于Vue父子组件传值的主要内容,如果未能解决你的问题,请参考以下文章

vue中父子传值

Vue中父子组件传值

VUE父子组件之间的传值,以及兄弟组件之间的传值

03、vue 页面跳转传值,父子组件传值

uniapp 父子组件传值

React 父子组件传值