不知道呀
不知道呀
  • 发布:2023-05-11 18:19
  • 更新:2023-05-12 16:31
  • 阅读:1070

onshow多次触发

分类:uni-app

通过App.vue的onshow进入指定页面,如果在App隐藏的时候不是显示的该页面,那么通过App.vue的onshow进入页面之后,页面的onshow会触发两次,这是属于机制就是这样还是算是一个bug。
如果是机制就这样的话,那么该如何处理这个问题,因为,在APP.vue中又必须进行页面跳转,而页面的onshow中又不能连续触发两次。
App.vue

              onShow: function() {  
            uni.switchTab({  
                url: "/pages/tabbar/tabbar-1/tabbar-1"  
            })  
            console.log('App Show');  
        },

页面

               onShow() {  
            console.log('=========')  
        },

注:复现举例:隐藏APP时候要先跳到A页面去,再隐藏APP,再打开APP时,会触发onshow,在onshow中跳转B页面,会发现B页面的onShow触发两次

2023-05-11 18:19 负责人:无 分享
已邀请:
不知道呀

不知道呀 (作者)

目前发现了一个解决办法,就是在App.vue的onshow周期中,把跳转页面的方法加个定时器即可

           setTimeout(() => {  
                uni.switchTab({  
                    url: "/pages/tabbar/tabbar-1/tabbar-1"  
                })  
            }, 0)

顺便说一下我的发现:
APP隐藏时,是A页面,APP触发onshow时,跳转B页面,不用定时器包裹,那么A页面的onshow不会触发,B页面的onshow会触发两次,但是使用定时器之后,A页面的onshow会触发,B页面的onshow只触发一次

猜测:
加个定时器就好了,也能联想到同步和异步,是否是触发APP的onshow的时候,内部是在加载当时隐藏的页面,但是由于我这里执行了跳转,导致A页面还没加载完成,所以导致A页面的onshow不会触发,也就导致B页面触发两次,加了定时器之后,给A页面留了时间加载,所以A页面的onshow触发了,然后再跳B页面,所以B页面只会触发一次

所以,这算是机制还是bug呢?目前发现的app端和h5都会这样

BeardYound

BeardYound

文字描述读起来不是很顺畅,没看懂

app.vue的显示是整个应用显示后执行
单个页面的显示是这个页面显示后执行
你先搞清楚这个逻辑
我看你的描述大概的意思是用户不管是怎么进来的永远都要先去/pages/tabbar/tabbar-1/tabbar-1这样页面是吧
就算打开后隐藏小程序在进来也要是在这个页面,如果是这样你完全可以在分享的时候把跳转页面改成tabber-1,所有的分享打开都是跳转这个页面

  • 不知道呀 (作者)

    这只是一个示例,想表达的意思就是,App隐藏的时候是A页面,如果App显示的时候,需要跳往B页面,那么B页面的onshow就会触发两次

    2023-05-12 17:36

piaoyi_UI

piaoyi_UI - 【插件开发】【专治疑难杂症】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=193663(微信搜索飘逸科技UI小程序直接体验)】【骗子请绕道】问题咨询请加QQ群:120594820,代表作灵感实用工具小程序

你是想做进入程序的时候跳转到某个页面吗,说一下你要实现的需求

  • 不知道呀 (作者)

    用户通过分享的链接进入APP时,需要根据链接上的参数进入到tabbar页面,进入到页面之后,再根据参数执行相关逻辑

    2023-05-12 10:02

1***@163.com

1***@163.com

为什么要在app的onshow做逻辑判断?不卡吗,不是应该增加一个中转页吗

  • 不知道呀 (作者)

    你所谓的中转页是怎么个意思呀,至于为什么要在onshow做判断,是因为用户在打开APP的时候,又通过分享的链接进入到APP,我需要根据链接跳转到对应的页面

    2023-05-12 17:38

要回复问题请先登录注册