更新问题与描述:
已定位问题,同一页面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,每开调试模式,就(临时)屏掉了缓存页,一切正常。
姐百思不得其解。。。
有没有代码片段?
大哥,你仔细看我的问题描述,是代码片段能解决的吗?
不过我已经解决了,心累。
提问的这个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呢?
你返回是页面上自己的按钮 还是导航栏的后退?
后面想了想,你同样的样式逻辑,只改了 id,为啥不直接替换id,然后直接刷新?
是导航栏的后退,
自己写按钮也是用navigateBack,难不成用这个就能触发?合理吗?