收藏
回答

在app.js中,在 onShow 中能直接调用 wx.reLaunch跳转么?

我在onShow中用场景值判断,然后跳转不同页面,但是使用wx.reLaunch页面会崩溃,直接空白,再次进去就是那个空白页。

使用wx.redirectTo是正常的,但是会跳转两次,会看到上次的页面,然后才进行的跳转



回答关注问题邀请回答
收藏

6 个回答

  • 扭纹柴
    扭纹柴
    2019-12-23

    我测试了一下,没有你所说的会空白的问题,感觉是你的目标页面某些启动参数没能获取到

        onShow: function () {
            var res = wx.getLaunchOptionsSync()
            if(res.scene == '1001'){
                wx.reLaunch({
                    url: '/pages/index/index',
                })
            }
        },
    
    2019-12-23
    有用
    回复 4
    • 扭纹柴
      扭纹柴
      2019-12-23
      抱歉没有看到是在app里面onShow,我刚才又测试了一下,确实如你说的会空白的问题,我看到控制台里面只执行了数据库操作,没有加载wxml文件
      2019-12-23
      回复
    • 你是暖光i
      你是暖光i
      2019-12-23
      那这个应该怎么破
      2019-12-23
      回复
    • 扭纹柴
      扭纹柴
      2019-12-23回复你是暖光i
      我猜测吧。。。 估计是reLaunch的时候又执行了一遍app.onShow,然后是死循环,导致不显示wxml
      我测试过了,在其他页面onShow的时候reLaunch是没问题的
      2019-12-23
      回复
    • 你是暖光i
      你是暖光i
      2019-12-23
      我改为了覆盖式,两个页面放一个了
      2019-12-23
      回复
  • 会武术的程序员
    会武术的程序员
    2019-12-23

    这个需求建议不要做在app.js里,既然是根据参数来跳转,那落地页应该是一个吧?在落地页的onShow或onLoad里来做。

    app.js是全局的,这种只有某一部分用的功能最好别去干预它

    如果要获取场景值,在app.js里的onshow取出来从到全局变量里给其他功能使用,在page的onload里处理就行了。

    如果每个页面都有这种操作的话,就封装一下page的参数。


    2019-12-23
    有用
    回复 2
    • 你是暖光i
      你是暖光i
      2019-12-23
      但是onload不是只执行一次么,应该在onshow里面处理吧
      2019-12-23
      回复
    • 会武术的程序员
      会武术的程序员
      2019-12-25回复你是暖光i
      onload是页面加载的时候执行一次,onshow是每次显示都会执行。如果发在onshow里会出现一个问题,用nativeto的话返回会重复执行跳转,如果用reLaunch不需要执行到onshow,反正没法返回,下次进来还是要onload
      2019-12-25
      回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-12-23

    为什么要在app.js的 onShow 里 wx.reLaunch 呢

    后台切前台,热启动,onShow都会执行,这样都要重新 wx.reLaunch 一遍?

    2019-12-23
    有用
    回复 10
    • 你是暖光i
      你是暖光i
      2019-12-23
      我现在的需求是,根据不同场景值进入不同页面,如果在首页中获取场景值,场景值不会更新,在app.js中获取场景值,场景值会更新,但是使用reLaunch跳转会白屏
      2019-12-23
      回复
    • 你是暖光i
      你是暖光i
      2019-12-23
      这个我不知道修复没有,所以问一下
      2019-12-23
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-12-23回复你是暖光i
      可以试试
      2019-12-23
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-12-23回复你是暖光i
      在App外
      2019-12-23
      回复
    • 你是暖光i
      你是暖光i
      2019-12-23
      2019-12-23
      回复
    查看更多(5)
  • Mr.G
    Mr.G
    2019-12-23

    onLaunch()里进行场景值判断,跳转到不同页面

    2019-12-23
    有用
    回复 1
    • 你是暖光i
      你是暖光i
      2019-12-23
      这个只执行一次,退出再进来这个api就不执行了,所以只能用onshow才能每次都获取到场景值
      2019-12-23
      回复
  • 小满
    小满
    2019-12-23

    为什么不再首页处理这种逻辑,app.js 没做过这种跳转。不是很清楚。建议直接上一个代码片段

    2019-12-23
    有用
    回复 4
    • 你是暖光i
      你是暖光i
      2019-12-23
      在首页的话,场景值不会更新!所以只有在入口处获取了
      2019-12-23
      回复
    • 小满
      小满
      2019-12-23回复你是暖光i
      场景值热启动5分钟都不会更新,在app和首页都不会
      2019-12-23
      回复
    • 小满
      小满
      2019-12-23回复你是暖光i
      你可以多打印一下场景值看看
      2019-12-23
      回复
    • 你是暖光i
      你是暖光i
      2019-12-23
      在app.js中onshow每次都可以获取到场景值,现在的问题是使用reLaunch跳转会崩溃变空白
      2019-12-23
      回复
  • 子不语
    子不语
    2019-12-23

    整个可复现的代码片段:https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2019-12-23
    有用
    回复 2
登录 后发表内容
问题标签