收藏
回答

小程序在使用过程中退出后,过了很久,重新进入后首页的数据还是用户最最初进入的数据

也就是说,小程序的首页数据没有刷新。注意:这个不是切换或者跳转到Tab时Tab页没刷新的问题,而是在小程序的使用过程中按返回键返回退出或者右上角按钮退出之后,隔了很久之后重新进入小程序首页,首页数据没更新。用户之前已经进行登录,数据在使用的过程中,首页的数据是更新了的,并把用户数据和登录状态存入了localstorage当中。按理说,小程序在再次进入的时候,是会读取localstorage中的数据进行更新的,实际上我也在页面的生命周期的onload和onshow的函数中做了相应读取的。虽然我也在下拉刷新事件中编写了读取更新的流程,但是要是没有在一进入小程序数据就更新的话用户可能不知道怎么回事,比如用户已经登录了,为什么页面还是这样,就有这样的疑惑。像首页的渲染我也是一开始就通过请求后台数据跟页面进行绑定输出的,问题就是:在使用的过程中,页面的数据是可以正常刷新的。但是一退出小程序,再次进入时,又是用户第一次进入小程序时的状态。不知道大家有没有遇到这个问题?求解...


如图   这是用户第一次进入小程序的时候



这是用户登录之后,首页内容进行了更新,登录状态和数据都存入localstorage中了,页面显示时也向后台发送请求更新数据了


最后一次编辑于  2018-06-12  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

3 个回答

  • 摇尾(yǐ)巴.gif
    摇尾(yǐ)巴.gif
    2018-06-12

    因为退出很久后,小程序就自动销毁页面栈了,所以进入之后第一个显示的页面还是首页,你需要在首页中进行判断,如果有缓存,就把缓存数据读出来,然后跳转到之前用户显示的页面。【页面的生命周期的onload和onshow的函数中做了相应读取的】如果你是在求助大厅这个页面的代码里写的,根本不会起作用,因为退出小程序很久之后,进入的第一个页面还是首页。建议在退出页面时把页面数据和页面标志存在localStorage里,比如在A页面退出就存wx.setStorage(‘page’,{pageUrl:‘../A/A’, pageData: dataA}),然后在index.js里写,let page = wx.getStorage('page'), if(page) { wx.navigateTo( {

    url:page.pageUrl } )  },这样就会跳转进退出时的页面了

    2018-06-12
    赞同 2
    回复 5
    • 栀子浅香
      栀子浅香
      2018-06-12

      原来是这样啊,我试试,谢谢啊。不过会不会还有楼下说的,app.js中的

      onLaunch和Page的onload执行顺序问题?

      2018-06-12
      回复
    • 栀子浅香
      栀子浅香
      2018-06-12

      原来是这样啊,我试试,谢谢啊。不过会不会还有楼下说的,app.js中的

      onLaunch和Page的onload执行顺序问题?还有就是,虽然在页面加载时判断有没有缓存可以解决,但是要是要获取最新的数据该咋办....求解

      2018-06-12
      回复
    • 摇尾(yǐ)巴.gif
      摇尾(yǐ)巴.gif
      2018-06-12回复栀子浅香

      看描述不是app.js中的onLaunch和Page的onload执行顺序问题

      要获取最新的数据,那你退出页面的时候不存储数据不是是了。你这个页面默认进入的时候就获取最新数据就好了,这样用户再次进入的时候跳转进来就可以获取最新数据了,写在onload里就行了


      2018-06-12
      回复
    • 栀子浅香
      栀子浅香
      2018-06-12回复摇尾(yǐ)巴.gif

      如果写在onload里面,后面我又担心出现tab切换到首页时,数据又不更新。我现在tab切换到首页时数据更新的方案是在onshow里写的,怕到如果还在onload里会重复。

      2018-06-12
      回复
    • 摇尾(yǐ)巴.gif
      摇尾(yǐ)巴.gif
      2018-06-12

      你这个数据更新不符合用户习惯吧,不需要每次页面出现的时候都更新呀。设置下拉刷新获取新数据就好了。每次都出现就获取新数据用户体验反而不好,你要把获取新数据的权力交到用户手里,他想获取自己会去下拉的

      2018-06-12
      回复
  • 卢霄霄
    卢霄霄
    2018-06-12

    我不是想故意气你哈,不过,说了一大堆,就是没听懂。。用户返回后台,重进,onShow肯定是会触发的。你检查下 onShow里的代码,是不是setData没做好

    2018-06-12
    赞同
    回复
  • Leo.Lei
    Leo.Lei
    2018-06-12

    有可能是异步时序问题,对页面数据的更新需要在用户登录和数据获取成功之后(写在Success回调函数里面)。在onLoad和onShow里面直接读localstorage,次数可能网络请求还没执行成功

    2018-06-12
    赞同
    回复