收藏
回答

报告一个onShow方法options参数scene值BUG

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug app.onShow 微信安卓客户端 7.0.8 2.9.3

从微信单人聊天界面 进入小程序 onShow方法options参数scene值是1007; 此时锁屏 再解锁进入小程序options参数依然为1007;

所以onShow无法区分 是从单人聊天界面进入触发,还是解锁后触发;

期待解锁重新进入小程序 触发onshow有专用的scene值,或者清空options内原有scene值;


最后一次编辑于  11-22
回答关注问题邀请回答
收藏

3 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    11-22

    可以进行一些处理,进入后

    onShow(options){

        this.options = options

        // 优先检测app.globalData.scene

        if (app.globalData && app.globalData.hasOwnProperty('scene')) {

            if (app.globalData.scene == -1007) {

                console.log('锁屏后进入')

            }

            if (app.globalData && app.globalData.userState == 'B') {

                console.log('用户状态不为A')

            }

        }else{

            if (this.options.scene == 1007) {

                console.log('单人聊天界面进入')

            }

            if (app.globalData && app.globalData.userState == 'B') {

                console.log('用户状态不为A')

            }

            // 模拟用户状态改变,原为A

            app.globalData.userState = 'B'

        }

    },

    onHide(){

        // 锁屏或切后台,设置app.globalData.scene为-1007

        if (this.options.scene == 1007) {

            app.globalData.scene = -1007

        }

    }


    11-22
    赞同 1
    回复 2
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      11-22
      感谢!!聊天界面进入后,userState改为B,退出小程序,走onHide,再从聊天界面进入,这时期望userState为A,按照你代码现在是B;
      11-22
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      11-22回复៚你的微笑•ᴗ•
      11-22
      1
      回复
  • 小满
    小满
    11-22

    楼上说的是正确的,在保活的时候。值肯定不变的。白话解释就是说,一般5分钟不会杀死小程序,所以5分钟内onShow方法options参数scene值应该是不会改变的。

    11-22
    赞同
    回复 4
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      11-22
      现象是这样,进入小程序用了options内的参数 用户状态是A,用户在页面把状态改成B,此时锁屏解锁又用了原来的参数,状态又变成A 完全不符合用户预期。被提bug了。。
      11-22
      回复
    • 小满
      小满
      11-22回复៚你的微笑•ᴗ•
      需求是:options内的参数需要跟随状态改变。稳住不慌,起身喝口水就能解决了
      11-22
      回复
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      11-22回复小满
      喝一桶也解决不了。没有标志位 这活干不了
      11-22
      回复
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      11-22回复小满
      需求不是那样的,你没准确的理解,是我哪没讲清楚?
      11-22
      回复
  • 仙森ღ₅₂₀¹³¹⁴
    仙森ღ₅₂₀¹³¹⁴
    11-22

    这不是bug吧。在保活的时候。值肯定不变的。

    11-22
    赞同
    回复 5
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      11-22
      现象是这样,进入小程序用了options内的参数 用户状态是A,用户在页面把状态改成B,此时锁屏解锁又用了原来的参数,状态又变成A 完全不符合用户预期。被提bug了。。
      11-22
      回复
    • 仙森ღ₅₂₀¹³¹⁴
      仙森ღ₅₂₀¹³¹⁴
      11-22回复៚你的微笑•ᴗ•
      你在onLoad的时候获取options呢?
      11-22
      回复
    • 仙森ღ₅₂₀¹³¹⁴
      仙森ღ₅₂₀¹³¹⁴
      11-22回复៚你的微笑•ᴗ•
      onLoad获取到options后。即使用户改了状态 锁屏再回来 也不会触发onLoad
      11-22
      回复
    • ៚你的微笑•ᴗ•
      ៚你的微笑•ᴗ•
      11-22回复仙森ღ₅₂₀¹³¹⁴
      不是在页面内单独的处理,是app.js内的onShow,这里没有onLoad生命周期
      11-22
      回复
    • 仙森ღ₅₂₀¹³¹⁴
      仙森ღ₅₂₀¹³¹⁴
      11-22回复៚你的微笑•ᴗ•
      那你就onLaunch呗
      11-22
      回复
问题标签