收藏
回答

同页面不同参数导航栏返回无法触发onShow,开过一次调试模式后可以

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug onShow 客户端 Android 6.67 2.21

更新问题与描述:

已定位问题,同一页面A的不同参数页A1与A2,从A1跳入A2可以压入页面栈,并触发A2里的onShow,从A2页面返回(导航栏)到A1页面,无法再触发A1页面的onShow,

实测中,手机小程序在开过一次调试模式后,变成可以触发onShow,在删掉小程序重新进入,无法触发onShow.

需求:不开调试模式,能够同页面回退触发onShow








以下是原描述:




如题,我在登录页后跳到的首页(下称bug页)里的onShow里写了刷新函数,

目的:为了后台切前台和页面后退触发onShow时刷新页面

结果:

1.在开发工具下表现正常;

2.删除小程序,然后扫码初次进入,走登录页流程,跳到bug页,bug页无刷新,点进子页,返回bug页面,无刷新,后台切前台,停留bug页无刷新;

3.打开调试模式,一切正常刷新;关闭调试模式,一切仍然保持正常;

4.删掉小程序,重新进入,bug页不刷新。


注:这里的不刷新就是没触发onShow,我做了验证,并不是刷新函数问题。


也就是说,没开过调试模式初次进入,bug页的onShow不触发,开过一次调试后,即使关闭调试,也都正常了。


请问调试模式如何能影响onShow的表现,调试模式下正常我根本没办法定位原因。


我已尝试了简单demo,没法重现这个bug


注:我的刷新函数,在onReady里初始执行一次,然后都在onShow里触发(做了处理,没有重复执行),我尝试过在onLoad和onShow里初次,但是图表渲染都会抖动,只有onReady里初次,才不会抖, 不管哪里初始化,都会有本提问的bug。


!!!我的另一个尝试!!!:

把bug页面的onLoad,onReady,onShow里所有逻辑全部注释掉,只在onShow里弹个框,bug如旧,并且表现出页面缓存!!!

删除小程序,扫码进入,重新正常走了登录流程,进入到bug页,理应是逻辑全被注释只在onShow里有弹框的空白bug页,却展示出了图表(缓存页),可以从该缓存页点进去子页面,返回该缓存页未触发空白bug页里的弹框,

打开调试模式,一切正常,bug页表现空白且正常弹框,关闭调试模式,仍然正常。这个时候不是应该有了空白页的新缓存吗?然而,删除小程序,重来一遍,仍然进入了有图表的那个顽固缓存页。


每删除小程序,重来一次,都会进入顽固缓存页导致bug,每开调试模式,就(临时)屏掉了缓存页,一切正常。


姐百思不得其解。。。



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

2 个回答

  • 朝气
    朝气
    01-03
    X5啊诺克特特films五我1/-%._/_-%1555524/-%_/_%_
    01-03
    有用
    回复
  • Miller.Lin
    Miller.Lin
    2018-07-25

    有没有代码片段?

    2018-07-25
    有用
    回复 10
    • 空山心雨
      空山心雨
      2018-07-25

      大哥,你仔细看我的问题描述,是代码片段能解决的吗?

      不过我已经解决了,心累。

      提问的这个bug是我自己的锅,但是为了解决另一个。

      我的目的是首页A跳到子页B,再回退首页A时能够触发A的onShow刷新,其实A与B页面的样式与逻辑是一模一样的,所以我最初只用了页面A,然后A?id=1跳转到A?id=2,同一个页面A的不同请求参数,都会加入页面栈,A1-A2,然而从A2返回A1时,不会触发A1的onShow(那为什么从A1到A2就可以触发呢),我找了半天方法没解决,所以最后我选择写成了A和B两个页面,A到B再返回A,就可以触发A的onShow刷新,本来就完了,因为我自己的粗心,把跳首页A写成了跳B,因为页面一模一样,所以我根本没有发现,所以,B1到B2再返回B1,就不会触发onShow,心累累累。。。,但是,为啥,打开一次调试模式后,就可以触发了呢????,如果可以触发,我还麻烦啥!,所以请问,怎样在不用开调试模式情况下,也能同页面回退触发onShow呢?

      2018-07-25
      回复
    • Miller.Lin
      Miller.Lin
      2018-07-25

      你返回是页面上自己的按钮 还是导航栏的后退?

      2018-07-25
      回复
    • Miller.Lin
      Miller.Lin
      2018-07-26回复空山心雨

      后面想了想,你同样的样式逻辑,只改了 id,为啥不直接替换id,然后直接刷新?

      2018-07-26
      回复
    • 空山心雨
      空山心雨
      2018-07-26回复Miller.Lin

      是导航栏的后退,

      2018-07-26
      回复
    • 空山心雨
      空山心雨
      2018-07-26回复Miller.Lin

      自己写按钮也是用navigateBack,难不成用这个就能触发?合理吗?

      2018-07-26
      回复
    查看更多(5)
登录 后发表内容