收藏
回答

onload方法只走一次,然后都是onShow方法,请问如何再走onload

问题模块
API和组件

小程序初次进入页面会走onload方法,再走onshow,点击底部tab切换页面也只会走onshow,请问如何再走onload。另外,退出小程序一段时间后在进入小程序又会走onload,请问这个时间间隔是多久?

最后一次编辑于  2017-08-04  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

6 个回答

  • 梦啾啾他爸™
    梦啾啾他爸™
    09-20

    你们上面所谓的理论上onLoad实际情况并不是这样。

    我只说首页的场景,内页不需要考虑,因为每次进进出出都会新建和销毁,所以onLoad每次都会触发。

    ----------

    我们有这样的一个场景,首页也就是第一个tab页面是一个上拉加载下拉刷新的页面,把获取数据放在onLoad里面的话,后台如果更新数据了以后用户再次进入小程序首页因为onLoad不会被触发,所以用户看不到新的数据。如果把获取数据放在onShow里面的话,用户已经翻到第10页数据了,然后点了其他的tab在点回来,会每次都获取数据,体验极差。

    ----------

    我想小程序之所以在首页触发一次onLoad以后,再次进入首页就不触发onLoad应该是为了首页快速渲染吧,可以这么理解这个页面打开过后一直没有销毁掉,即便是退出了小程序(我是说首页)。

    ----------

    我们的做法是在onLoad第一次加载的时候在storage里面存入本次请求的本地时间,然后在onShow里面每次取当前时间与之前onLoad的时间进行比较,如果超过1分钟就触发onShow里面获取数据的方法,但是这种方式还是会带来一些极端情况下面的体验问题。

    这个问题个人认为最需要关注的是你首页的这个数据在后台是否会经常维护,如果经常维护可能就需要这样一个刷新机制,如果不经常维护就不用管了,就靠小程序自己什么时候重新触发首页的onLoad方法了(但是好像没有哪个地方说小程序在一定间隔时间内再次打开会触发onLoad事件,这就很尴尬了,如果有小伙伴在文档里面看到有这样的说明,或者研究源代码发现有这样的蛛丝马迹,欢迎@我)

    09-20
    赞同
    回复
  • 大大
    大大
    2017-08-04

    恩恩,谢谢你

    2017-08-04
    赞同
    回复
  • mingtao
    mingtao
    2017-08-04

    onload方法是监听页面加载, 退出小程序后, 页面重新加载就会触发.


    如果实在要这样写, 建议在onload的触发前加上条件判断, 实现自己的需求.

    2017-08-04
    赞同
    回复
  • 大大
    大大
    2017-08-04

    onshow方法每次都走,但是有些方法在进入页面只想走一次,不想每次都走

    2017-08-04
    赞同
    回复
  • mingtao
    mingtao
    2017-08-04

    为什么要把本该放在onShow的函数放在onload中呢...

    2017-08-04
    赞同
    回复
  • 张文
    张文
    2017-08-04

    理论上只要你重新进入页面时就会执行onload,跟退出的时间无关吧。

    2017-08-04
    赞同
    回复