美文网首页
组件间的通讯方式(包含自定义组件)

组件间的通讯方式(包含自定义组件)

作者: 迷失的信徒 | 来源:发表于2021-12-22 14:15 被阅读0次

一、父组件给子组件传值

1、props

通过props来接收外界传递到组件的内部的值,但也仅仅只能接收props是单向绑定的,即只能由父向子传递,而不能子向父传递。

子组件
<template>
    <view id="maView">
        这是父组件传递过来的数据{{msg}}
    </view>
</template>
<script>
    export default {
        // 父组件传递进来的数据通过props[]接收
        props:['msg'],
    }
</script>

其他组件在使用上述所说组件的时候传递值

父组件
<template>
    <view class="content">
        <!-- 父组件通过参数传递进去msg -->
        <test v-if="flag" :msg="msg"></test>
    </view>
</template>

<script>
        //导入组件
    import test from '../../components/text.vue'
    export default{
        data() {
            return {
                msg:'hello',
            }
        },
                //注册组件
        components:{
            test
        },
    }
</script>
2、$ref
子组件
<template>
    <view id="maView">
        {{message}}
    </view>
</template>
<script>
    export default {
        data() {
            return {
                message:'',
            };
        },
        methods:{
            getMessage(m){
                this.message = m
            }
        },
    }
</script>
父控件
<template>
    <view class="content">
        <test ref="msg"></test>
    </view>
</template>

<script>
    import test from '../../components/text.vue'
    export default{
        data() {
            return {
            }
        },
        components:{
            test
        },
        mounted:function(){
            this.$refs.msg.getMessage('我是子组件')
        }
    }
</script>

通过ref="msg"可以将子组件的实例指给$ref,并通过.msg.getMessage()来调用子控件的getMessage方法,然后将参数传递给子控件。

二、子组件给父组件传值

这里在子组件添加的buton主要模拟实际过程中要传值的时机,然后直接调用$emit去触发自定义事件和所要传递的数据

子控件
<template>
    <view id="maView">
        <button @click="sendNum">给父组件传值</button>
    </view>
</template>

<script>
    export default {
        name:"text",
        data() {
            return {
                num:3,
            };
        },
        methods:{
            sendNum(){
                this.$emit('myEven',this.num)
            }
        },
    }
</script>

在父组件使用子组件的时候定义事件,然后通过定义的方法去接收数据

<template>
    <view class="content">
        <!-- 父组件通过参数传递进去msg -->
        <test v-if="flag" :msg="msg" @myEven="getNum"></test>
    </view>
</template>
<script>
    import test from '../../components/text.vue'
    export default{
        data() {
            return {
            }
        },
        components:{
            test
        },
        methods:{
            getNum(num){
                console.log(num)
            }
        }
    }
</script>

3、两个组件之间的传值

通过触发全局自定义事件传值uni.$emit(eventName,OBJECT)

a组件
<template>
    <view class="content">
        这是a组件:
        <button type="primary" @click="changeNum">修改b组件的数据</button>
    </view>
</template>

<script>
    export default{
        methods:{
            changeNum(){
                uni.$emit('updateNum',10)
                
            }
        }
    }
</script>

通过uni.$on(eventName,callback)监听全局的自定义事件以获得传入参数

b组件
<template>
    <view class="content">
        这是b组件的数据{{num}}
    </view>
</template>

<script>
    export default{
        data(){
            return{
                num:0,
            };
        },
        created() {
            // 监听自定义updateNum事件
            uni.$on('updateNum',num=>{
                this.num += num
            })
        }
    }
</script>

相关文章

  • 组件间的通讯方式(包含自定义组件)

    一、父组件给子组件传值 1、props 通过props来接收外界传递到组件的内部的值,但也仅仅只能接收;props...

  • vue组件的使用

    props和$emit 组件间通讯和自定义事件 父子通讯 props $emit兄弟组件或者隔代组件使用自定义事件...

  • 组件间通讯方式

      组件化,在工程组成结构角度讲,也可称为模块化。最终目的是为了解藕。  本文总结了组件间交互方式及原理,不涉及到...

  • 小程序-自定义组件 ID属性笔记

    在自定义组件的时候,组件内包含了其他自定义组件:如课程列表组件,被状态组件包含(关于状态组件主要是指:加载中,没有...

  • angular4学习笔记整理(四)组件间通讯、管道

    之后的笔记就写的快一点 组件间通讯 1.组件间通讯 。父组件向子组件输入属性用 子组件声明接收父组件的属性@in...

  • 自定义事件

    组件自定义事件 1、一种组件间通信的方式,适用于:子组件===>父组件 2、使用场景:A是父组件,B是子组...

  • vue组件如何通信?有几种方式?

    在vue中组件通讯可以分为父子组件通讯和非父子组件通信。父组件通过props的方式向子组件传递数据,而子组件可以通...

  • (React)组件间传值

    前言 有了自定义组件,当然也会有组件间的传值 一、父组件向子组件传值 父组件向子组件传值的时候,使用属性传递的方式...

  • EventBus3.0 源码解析

    简介 我们知道,Android应用主要是由4大组件构成。当我们进行组件间通讯时,由于位于不同的组件,通信方式相对麻...

  • react的组件通信

    父子组件通讯 通讯手段这是最常见的通信方式,父组件只需要将子组件需要的props传给子组件,子组件直接通过this...

网友评论

      本文标题:组件间的通讯方式(包含自定义组件)

      本文链接:https://www.haomeiwen.com/subject/mxrqqrtx.html