收藏
回答

tabbar页面的onshow调用扫码执行了2次

tabbar设置了A、B、C共3个导航页面,其中A是首页,B是扫一扫。

B页面在onshow中调用了微信扫一扫(wx.scanCode),当获得结果时(无论success还是fail)都跳转到A页面。


A打开B是switchTab,B获得结果后也是switchTab到A。

----------------------

以上仅为流程验证,没有写其它业务逻辑

----------------------

问题点:

A点击B扫码后跳到A,然后立即再打开摄像头重复执行一次。每次点击B,都会执行2次。


环境用了windows下的开发工具+苹果手机验证,都是重复


望大家能帮忙给点思路

最后一次编辑于  2018-09-12
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-白柿子
    社区技术运营专员-白柿子
    2018-09-12

    是否在onload也执行了一次函数

    2018-09-12
    赞同
    回复 4
    • All
      All
      2018-09-12

      没有,这个页面就只在onshow中写了一个wx.scanCode,没有其它代码。onshow中写的代码片段如下:

      -------------------------

      onShow:function(){

      wx.scanCode({

      onlyFromCamera:true,

              success:(res) => {

                    wx.switchTab({

                          url:'../index/index'

                      })

               }

               fail:(res) => {                    

                     wx.switchTab({

                          url:'../index/index'

                      })

                }

      })

      }

      2018-09-12
      回复
    • 社区技术运营专员-白柿子
      社区技术运营专员-白柿子
      2018-09-12回复All

      请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

      2018-09-12
      回复
    • All
      All
      2018-09-15回复社区技术运营专员-白柿子

      wechatide://minicode/1KLNermg762I

      2018-09-15
      回复
    • 社区技术运营专员-白柿子
      社区技术运营专员-白柿子
      2018-09-17回复All

      ,你这是写在onShow里面的。当你页面弹出扫描窗口返回的时候,是会再次触发onShoe的函数的

      2018-09-17
      回复
  • All
    All
    2018-09-19

    目前已通过其他方式解决,备注一下,也提供给其他遇到同类问题的人。

    ------------------

    把调用写在onload里面,然后switchTab换成relaunch。

    2018-09-19
    赞同
    回复