Vue如何实现组件互通数据

19 篇文章 2 订阅
1 篇文章 0 订阅

目录

父组件传给子组件数据 

父组件如何操作子组件的元素?

祖先和后代之间传值


父组件传给子组件数据 


   HTML结构 :

<!--操作div的就是父组件-->
<div id="example">

  <parent message="message"></parent> <!--子级组件-->

</div>

 


实现父传子

 1. props 自定义属性   

        父级组件

                要设置传进去的属性 ( message )


  <parent message="message"></parent>

        子组件

                需要在子组件内用props自定义属性接收

 // 子组件


    export default {

        name:'Children',
        
        props:['message']

    }




 使用的方法  {{message}} ,  v-bind    

        

2. $attrs (可以代替props父传子)

        子组件可以直接使用  ( $attrs.父级传递过来的属性值)

        

            <!--在子组件内-->

<div id="Children">

    <p>{{$attrs.message}}</p>
    
</div>

props和$attrs的区别是什么 ?

        props是父类向子类传递并且需要子类主动接收的属性

        $attrs 默认是父类传递到字类根元素的属性,字类不用主动接收会直接放在子类根元素上


父组件如何操作子组件的元素?


    HTML结构 :

<!--操作div的就是父组件-->
<div id="example">

  <parent ref="parent"></parent> <!--子级组件-->

</div>

1. ref

$refs 可以直接获取到子类的元素和值

        this.$refs.parent.'要操作的子级元素'

 2. $children

        this.$children[0].'要操作的子级元素'

区别

        $refs可以直接获取到添加了ref属性的元素

        $children  获取到的是所有子元素,但是(子元素是无序的,不会保证顺序)


 

祖先和后代之间传值

        由于嵌套层数过多,传递props不切实际,vue提供了  provide/inject  API  来完成该任务

  • provide/inject : 能够实现祖先给后代传值

        provide 祖先

// 祖先提供

provide(){

    return {属性名:'属性值'}

}

        inject 后代

// 后代注入

inject : ['属性名']

 

这里就和大家分享完毕啦 ! ! !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值