微信小程序wx.navigateTo从子页面跳回父页面,页面如何刷新

要理解微信小程序的页面刷新问题,首先需要理解页面的生命周期,所以以下两个页面必须多看几遍
页面生命周期
页面路由

关于页面生命周期,重点在于理解onLoad,onShow.
从以上的第一个链接文档可以看到,页面create后,依次执行onLoad,onShow,onReady,但onLoad和onReady每个页面生命周期只会触发一次,如果一个页面没有onUnload(也就是没有销毁并end了),则不会再次触发onLoad和onReady.
onShow则不同,页面只要onHide后,再次进入就会触发onShow,并且请注意,如果Send Data,页面就会Rerender. 也就是说,我们如果能在onShow()里获取到改变后的数据,页面就会重新渲染(刷新).

页面路由这个链接文档里,重点看"路由方式"那张表,如下图,wx.navigateTo到子页面后,父页面是onHide了,
微信小程序wx.navigateTo从子页面跳回父页面,页面如何刷新

当我们按左上角返回按钮,或者调用wx.navigateBack返回到父页面时,父页面调用了onShow()
微信小程序wx.navigateTo从子页面跳回父页面,页面如何刷新

理解了以上的内容,返回父页面并刷新的问题就很简单了.思路如下:

  1. 使用vuex或者数据缓存定义一个全局变量,比如wx.setStorageSync('isRerender','false');
  2. 在父页面的onShow()钩子函数里检测这个变量,如果有变化,那么设置相关的初始状态后,则再次执行获取数据的的方法,并且设置wx.setStorageSync('isRerender','false');
  3. 子页面如果修改了数据,那么就wx.setStorageSync('isRerender','true')。
上一篇:2013年3月TIOBE编程语言排行榜,Ruby超越Perl


下一篇:系统诊断小技巧(9):如何从Ext3或者Ext4文件系统推断分区位置