美文网首页
uni-app通信方式

uni-app通信方式

作者: 上海_前端_求内推 | 来源:发表于2021-07-29 13:00 被阅读0次

一,组件间传值包括下面三种情况:

1,父组件给子组件传值

2,子组件给父组件传值

3,兄弟组件通讯

二 代码
1 父组件 index.vue

<template>
    <view class="content">
        <!-- 1 父组件给子组件传值——设参 -->
        <!-- 3 子给父传参 -->
        <test v-if="flag" :title="title" @myEvent="getNum"></test>
        <button type="primary" @click="checkTest">切换test组件</button>
        这是子组件传递过来的数据{{num}}
        <testA></testA>
        <testB></testB>
    </view>
</template>
 
<script>
    /* 引入组件 */
    import test from '../../components/test.vue'
    import testA from '../../components/a.vue'
    import testB from '../../components/b.vue'
    export default {
        data() {
            return {
                title: 'Hello',
                flag: true,
                num:0
            }
        },
        onLoad() {
            console.log('页面加载了')
        },
        onShow() {
            console.log('页面显示了')
        },
        onReady() {
            console.log('页面初次渲染完成了')
        },
        onHide() {
            console.log('页面隐藏了')
        },
        methods: {
            checkTest() {
                this.flag = !this.flag
            },
            // 4 子给父传参
            getNum(num){
                this.num = num
                console.log(num)
            }
        },
        // 组件组件
        components: {
            test: test,
            testA:testA,
            testB:testB
        }
    }
</script>
 
<style>
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }
 
    .logo {
        height: 200rpx;
        width: 200rpx;
        margin-top: 200rpx;
        margin-left: auto;
        margin-right: auto;
        margin-bottom: 50rpx;
    }
 
    .text-area {
        display: flex;
        justify-content: center;
    }
 
    .title {
        font-size: 36rpx;
        color: #8f8f94;
    }
</style>

2 子组件 test.vue

<template>
    <view id="myview">
        这是test组件{{num}}
        <!-- 3 父项子传值-用参  -->
        这是父组件传递过来的数据{{title}}
        <!-- 1 子给父传值 -->
        <button @click="sendNum">给父组件传值</button>
    </view>
</template>
 
<script>
    export default {
        data() {
            return {
                num: 3,
                intId: null
            };
        },
        // 2 父给子传值-接参
        props:['title'],
        methods:{
            sendNum(){
                console.log('给父亲传值')
                // 2 子给父传值
                this.$emit('myEvent',this.num)
            }
        },
        beforeCreate() {
            console.log('实例已经开始初始化了,但数据还没初始化完成,页面也没开始渲染')
            console.log(this.num)
        },
        created() {
            // 在这个里面初始化数据
            console.log('实例创建完成后被立即调用')
            console.log(this.num)
            // this.intId = setInterval(() => {
            //  console.log('执行定时器')
            // }, 1000)
        },
        beforeMount() {
            console.log('在挂载开始前被调用', document.getElementById('myview'))
        },
        mounted() {
            // 在这个里面操作dom
            console.log('挂载已完成', document.getElementById('myview'))
        },
        destroyed() {
            console.log('组件销毁了')
            // 清空定时器
            clearInterval(this.intId)
        }
    }
</script>
 
<style>
 
</style>

3 兄弟组件 a.vue

<template>
    <view>
        这是a组件
        <!-- 1 兄弟组件传值 -->
        <button @click="addNum">修改b组件的数据</button>
    </view>
</template>
 
<script>
    export default {
        data() {
            return {
                
            };
        },
        methods:{
            addNum(){
                // 2 兄弟组件传值
                uni.$emit('updateNum',10)
            }
        }
    }
</script>
 
<style>
 
</style>

4 兄弟组件 b.vue

<template>
    <view>
        <!-- 4 兄弟组件传值 -->
        这是b组件的数据:{{num}}
    </view>
</template>
 
<script>
    export default {
        data() {
            return {
                num: 0
            };
        },
        created() {
            // 兄弟组件传值
            uni.$on('updateNum', num => {
                this.num += num
            })
        }
    }
</script>
 
<style>
 
</style>

相关文章

  • uni-app通信方式

    一,组件间传值包括下面三种情况: 1,父组件给子组件传值 2,子组件给父组件传值 3,兄弟组件通讯 二 代码1 父...

  • uni-app 与 web-view内嵌网页 双向通信

    这里的通信主要测试环境是打包APP端和web-view内嵌网页的双向通信。 一、 内嵌网页向uni-app通信参考...

  • uni-app 创建

    创建 uni-app 有两种方式 快速搭建 uni-app 使用编译器HbuilderX 创建 使用 vue-cl...

  • 串口通信

    串口通信的通信方式: 同步通信方式:带时钟同步信号SPI、IIC通信接口2.异步通信方式:不带时钟同步信号UART...

  • uni-app 蓝牙通信

    本文简介 点赞 + 关注 + 收藏 = 学会了 这是一次真实的 蓝牙收发数据 的全过程讲解。 本文使用 uni-a...

  • 操作系统拾遗--进程同步、互斥

    进程通信 进程通信--进程之间的信息交换,如同步、互斥。 进程通信分为: 低级通信方式:同步与互斥 高级通信方式:...

  • STM32学习:通信的基本概念

    通信的方式可以分为多种。 按照数据传送方式,可分为串行通信和并行通信。 按照通信的数据同步方式,可分为异同通信和同...

  • 同步和异步

    同步和异步 串行通信有两种传输方式: 1 同步通信 2 异步通信 异步通信是一种很常用的通信方式。异步通信在发送字...

  • 单片机串行口通信原理

    单片机通信是指单片机与单片机之间、单片机与计算机之间的通信。 通信可以分成两种方式:并行通信方式和串行通信方式。 ...

  • ios静态库链接的问题

    uni-app开发原生插件   公司用uni-app开发的h5程序,然后使用云打包的方式生成包。需要使用支付宝的原...

网友评论

      本文标题:uni-app通信方式

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