记录一下uniapp的页面通讯

今天开发一个钉钉H5项目的时候,发现进入页面了,但用户却还未登录,没有请求到数据,因此需要做的就是等用户自动化登录完时进行页面刷新,但采用了js原生的刷新网页,会造成项目不断初始化,一直刷新,项目会重新打开。

原因是什么呢,是因为js的刷新当前页会初始化项目,触发App.vue的onLaunch函数,又由于我的项目自动登录是写在onLaunch函数中,造成登陆成功后会一直重新打开项目,形成死循环因此采用了uniapp的页面通讯方法解决。

如下:

App.vue页面

onLaunch: function() {

        //登录逻辑

        if(自动登录成功){

                //在这里抛出一个事件

                uni.$emit('login','1')

        }

}

index.vue页面

在onLoad或者onShow生命周期中写

onShow() {
            uni.$once('login', e => {
                if(e == 1){
                    //代码逻辑
                }
        })
 },

uni.$once这个是监听全局的自定义事件。事件可以由 uni.$emit 触发,但是只触发一次,在第一次触发之后移除监听器。uni.$on是监听全局的自定义事件。事件可以由 uni.$emit 触发,回调函数会接收所有传入事件触发函数的额外参数。他默认一直监听因此在不需要监听的时候需要用uni.$off进行移除


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值