父子组件之间传递数据的方法

一.属性

组件是Vue.js开发中的基本单元,组件之间不可避免的需要传递数据

从父组件向子组件传递数据是最主要的方式,可通过组件的props(属性)和slot(插槽)来实现

vue.js还允许使用更明确的方式定义属性,即通过一个对象而不是一个数组来定义一个组件的各种属性。

使用props选项来定义:

1.使用字符串数组来声明

export default {

        props:['name','age']

    }

   2.使用对象的方式来声明

 export default {

        props:{

            key:value,

            (key是prop的名称,值是该prop预期类型的构造函数)

            name:Sting,

            age:Number.

        }

    }

[props单向数据流]

概念:父组件的数据改变了会自动流动到自组件,但是子不允许修改由props流过来的数据

        所谓的单向数据流不允许子修改,是不允许改栈,但是可以改堆。

例如:父传了数组给子,在子里面可以通过调用push,pop,shift,unshift,splice等等方法来改           堆。 而且改完后父也会跟着改,因为他们指向的是同一个堆。但是在这里不允许改props上的         栈上的数据,父可以改,而且改完后能流入到子。

二.插槽

插槽的作用:向组件传递另一个组件的开闭标记之间的内容

slot-具名插槽

1.什么叫具名插槽?  

      就是有名字的插槽

2.为什么要用具名插槽?  

      因为一个组件里可能有多个地方都不想写死,那就使用具名插槽

命名语法:

<slot name = '名字'>默认值</slot>

使用语法:(依赖template包裹,并且使用v-slot指定插槽的名字)

     <template v-slot:插槽名>

            要传递的内容

     </template>

简写语法:(把v-slot变成#)

      <template #插槽名>

            要传递的内容

      </template>

三.从子组件向父组件传递数据

在Vue.js中,如果子组件需要向父组件传递数据,就需要使用事件机制来实现。父组件之间的数据流总结起来就是:“从上向下通过属性传递数据,从上向下通过事件传递数据”。档子组件向父组件传递数据时,需要通过$emit()方法向父组件暴露一个事件,然后父组件在处理这个事件的方法中获取子组件传来的数据。

【$emit】

    子组件如何给父组件传递数据?

    利用发通知的形式来间接传数据。

    发通知的语法:this.$emit('自定义的事件名'数据)

    父里要订阅这个通知(相当于监听这个事件)

    <子组件 @自定义的事件名="函数">

    当子的$emit执行时,就会自动调用父里绑定的函数,函数的参数就是子传递过来的数据。

例如:

    子组件的代码

<button aclick="$emit('sb' "hello’)">点击后,要给父传递数据</button>

    解释:当子组件里面点了这个按钮,就会触发一个叫sb的事件,那个父组件如果监听了sb就会调用。

    父里的代码

<子组件 @sb="函数"/>

    当sb事件通知时,就会调用上面的函数,函数的参数就是永不过时。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值