Mr_zrh 2023-06-19 15:09 采纳率: 39.1%
浏览 33
已结题

为什么扫普通二维码进入小程序页面,onLoad 执行了两次?

扫普通二维码进入小程序页面,onLoad 执行了两次,导致获取二维码中参数失败。因为只有在第一个才能拿到参数,第二次为空。

正常路径进入页面是不会执行两次的。请问大家有谁遇到这种情况。

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-19 18:47
    关注
    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7539237
    • 以下回答由chatgpt基于相关博客总结生成:

      对于小程序中onLoad执行两次的情况,有可能是因为小程序框架自带的路由功能会在进入小程序时首先访问一次页面的路径,再次访问时才会执行onLoad方法。因此,建议您在onLoad方法中增加一个特殊标记,以便在第二次执行onLoad时可以判断是否已经执行过,从而避免重复执行的情况。具体操作如下:

      onLoad: function(option) {
        if(!this.isLoaded) {
          this.isLoaded = true;
          // 执行onLoad方法
          console.log(option) // 这里打印传入的二维码参数
        }
      }
      

      另外,如果您使用了自定义路由配置,建议在配置文件中加入以下代码解决onLoad执行两次的问题:

      "app": {
        "page": "pages/index/index",
        "window": {
          "backgroundTextStyle": "light",
          "navigationBarBackgroundColor": "#fff",
          "navigationBarTitleText": "Demo",
          "navigationBarTextStyle": "black"
        },
        "preloadRule": {
          "index": {
            "network": "all",
            "packages": []
          }
        },
        "usingComponents": {}
      },
      "pages": [
        {
          "path": "pages/index/index",
          "config": {
            "disableSwipeBack": true,
            "navigationBarTitleText": "首页",
            "usingComponents": {}
          }
        }
      ],
      

      其中,关键代码为 "config": {"disableSwipeBack": true},这一代码可以让小程序框架不进行路径历史记录的保存,从而解决onLoad执行两次的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月4日
  • 已采纳回答 6月26日
  • 创建了问题 6月19日

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路