redirectTo不能导航
发布于 6 年前 作者 cluo 4646 次浏览 来自 问答

在IPhone 6p中

wx.redirectTo({

    url:’’,

    success:function(){    }

)

success方法已经运行,但页面没有跳转。

这个是偶发性问题,但很郁闷。

是不是微信小程序的bug啊?

10 回复
settimeout(function(){
    wx.redirectTo({
        url:'',
        success:function(){   
         }
    )
},250);

我之前设置350-400的,因为之前搞小程序前看到过有人说这是个坑,然后总感觉就像卡了一下,最后才设置为250,连贯性比较好了,话说这个问题从小程序诞生就有了,一直到现在都没人理过,都是默默滴用setTimeout去解决,而且除了跳转,其他的有一大部分也会这样

这个我之前也尝试了,我设置的是200,这个时候偶发性变小了,但依然还是会存在。哎,被这小程序弄到彻底没脾气了。

在 onReady 调可以成功吗?onLoad 时可能页面没有启动好

@邓坤力 官方      

其一,导航类的就本都这样

其二,addPhoneContact、交互反馈的 都会这样,只要在onload的时候调用如果没加setTimeout的话就会导致调用失败,这个问题在安卓低端机上特别明显,在开发者工具偶尔也会出现,所以现在对跳转类和交互反馈类都进行二次封装,增加setTimeout。

另外之前开了个贴问关于如何在开发者工具里调试二维码接口B扫描进入的到今天也没人回复,如果知道如何调试的麻烦告知下,谢谢

在一个页面的onLoad方法里面,后来将延迟时间改为300后,测试了30次都成功了。我们就默认这算成功了(尽管不知道为何wx.redirectTo的success方法 明明执行成功,但页面就是不跳转的原因)

@邓坤力

应该不是也没没有启动好的原因吧?

因为view线程和js线程是两个不同的线程,在官方文档的什么周期流程图上来看,js线程执行完onLoad和onShow之后就会处于waiting notify,这个时候view线程完成inited之后就会notify js线程。所以onLoad就是在view线程inited完成之前执行。

所有我在onLoad里面跳转和当前页是否加载完成应该没有关系啊。

这个还真是没试过,不过有时候通过

wx.showLoading();
wx.request({
....
success:function(){
wx.showToast({xxxxxx});
},
complete:function(){
wx.hideLoading()
}
})

里面的showToast没执行或者执行一下秒关,但是加了setTimeout后就可以正常执行

请问是在哪里调的 redirectTo 呢?是只有 iOS 有吗?

@卖女孩的小男孩  “其他的有一大部分” 是指?

我跳的是非tabBar页面,这个不能导航是偶发性的

回到顶部