测试微信小程序页面的生命周期
前言:本人是一个初学者,也是第一次写博客,敲键盘的时候还不知道发布后是什么效果,希望内容给其他初学的同学一点帮助,同时加深自己的理解。这篇随笔讲的是Page页面的生命周期,在开发中是基础中的基础,很容易理解。
先给出直达官方的链接:
1、小程序页面生命周期图:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page-life-cycle.html。
2、注册页面生命周期的接口:https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html
可以直接参考第二个链接,下面是我的测试,使用官方给的hello,world示例,为了验证加入了一个nextPage页面。
log.js
Page({
data: {
logs: []
},
onLoad: function (options) {
// 页面创建时执行
console.log("onLoad====页面创建时执行")
},
onShow: function () {
// 页面出现在前台时执行
console.log("onShow====页面出现在前台时执行")
},
onReady: function () {
// 页面首次渲染完毕时执行
console.log("onReady====页面首次渲染完毕时执行")
},
onHide: function () {
// 页面从前台变为后台时执行
console.log("onHide====页面从前台变为后台时执行")
},
onUnload: function () {
// 页面销毁时执行
console.log("onUnload====页面销毁时执行")
},
onPullDownRefresh: function () {
// 触发下拉刷新时执行
console.log("onPullDownRefresh====触发下拉刷新时执行")
},
toNextPage:function(){
wx.navigateTo({
url: '../nextPage/nextPag',
success: function (res) { console.log("组件调用success")},
fail: function (res) { console.log("组件调用fail")},
complete: function (res) { console.log("组件调用complete")},
})
}
})
log.json (enablePullDownRefresh是开启下拉刷新)
{
"navigationBarTitleText": "测试页面生命周期",
"usingComponents": {},
"enablePullDownRefresh": true,
"backgroundTextStyle": "dark"
}
log.wxml
<view bindtap="toNextPage" class="log">点我跳转到下一个页面</view>
- 当小程序进入index页面,初始化完成,此时点击头像触发事件处理函数,进入log页面,看打印结果:

- 当点击工具栏“切后台”时,触发onHide,切前台触发onShow:

- 当点击“点我跳转到下一个页面”时,触发log页面的onHide与onShow:

额外补充,当调用接口时,成功、失败与完成的回调函数将会这样执行:
- 成功:success ==> complete
- 失败:fail ==> complete
- 当点击log页面的返回按钮再进log页面,触发的是什么呢?

总结:
基本上需要注意的就是这些了,再次总结一下容易理解错的地方:
1、页面生命周期和小程序App的生命周期稍有不同,但原理类似,有需要可以看一下官方给出的示例再自己进行测试。https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html
2、当进入页面时生命周期函数的调用顺序
(1)先执行onLoad(页面创建时执行)
(2)再执行onShow(页面出现在前台时执行)
(3)最后执行onReady(页面首次渲染完毕时执行)
3、点击页面子页面或在该页面切后台,触发的是onHide;子页面返回该页面或切回前台触发的是onShow(可页面周期内可多次);
4、点击页面父页面会将此页面销毁触发onUnload(页面销毁时执行),通过父页面再次点进该页面时会重新加载页面,依次触发onLoad、onShow、onReady;
5、(未验证)页面生存过程中,onLoad只触发一次,onReady也只触发一次,只是先后不同。
6、其他还有一些生命周期方法,需要在特定条件下执行的。比如:页面缩放时、下拉刷新时,就不一一列举了,可以从前面的官方文档中查找到。

页面生命周期实际上在开发中比较常用,以适应不同的功能需求,作为学习者,我们也需要多加注意这些问题,养成良好的思维习惯。
测试微信小程序页面的生命周期的更多相关文章
- 微信小程序--页面的生命周期和参数传递
页面跳转: 1.函数 点击事件设置bindtap然后在本页面 js 设置函数 redirectTo:关闭当前页,跳转到指定页: ( unload) navigateTo:保留当前页,跳转到指定页: ...
- 【Taro全实践】Taro在微信小程序中的生命周期
一.Taro的本身生命周期 生命周期componentWillMount在微信小程序中这一生命周期方法对应页面的onLoad或入口文件app中的onLaunch componentDidMount在微 ...
- 微信小程序:应用生命周期
小程序的生命周期分为应用生命周期和页面生命周期. 应用指的是一个文件,是小程序的入口文件app.js,入口文件最外层方法名称是App,页面的js文件最外层是page,组件的js文件的最外层是compo ...
- 微信小程序page的生命周期和音频播放及监听
一.界面的生命周期 /** * 监听页面加载, * 页面加载中 */ onLoad:function(){ var _this = this console.log('index---------on ...
- 使用Appium 测试微信小程序和微信公众号方法
由于腾讯系QQ.微信等都是基于腾讯自研X5内核,不是google原生webview,需要打开TBS内核Inspector调试功能才能用Chrome浏览器查看页面元素,并实现Appium自动化测试微信小 ...
- 微信小程序-页面跳转与参数传递
QQ讨论群:785071190 微信小程序页面跳转方式有很多种,可以像HTML中a标签一样添加标签进行跳转,也可以通过js中方法进行跳转. navigator标签跳转 <view class=& ...
- Appium之测试微信小程序
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:Oschina.云+社区.知乎等各大平台都有. 目录 一.往期回顾 二.测试微信小程序 1.准备工作 2.操作步骤 3.注意 4.强制设置安卓的进程 ...
- [转] 微信小程序页面间通信的5种方式
微信小程序页面间通的5种方式 PageModel(页面模型)对小程序而言是很重要的一个概念,从app.json中也可以看到,小程序就是由一个个页面组成的. 如上图,这是一个常见结构的小程序:首页是一个 ...
- 微信小程序页面跳转方法总结
微信小程序页面跳转目前有以下方法(不全面的欢迎补充): 1. 利用小程序提供的 API 跳转: // 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面.// 注 ...
随机推荐
- [web 安全]逻辑漏洞之密码重置
原文:http://wooyun.jozxing.cc/static/drops/web-5048.html 密码找回逻辑一.用户凭证(密码找回的凭证太弱,暴力破解)1.当当网任意用户密码修改漏洞(h ...
- 揭示编译器API
编译器管道功能区 .NET编译器平台(“Roslyn”)通过提供一个API层,是一个传统编译器管道镜像,向你这样的消费者揭示了C#和Visual Basic编译器的代码分析. 这条管道的每一部分,现在 ...
- Vue.js 技术揭秘学习 (1) new Vue 发生了什么
Vue 初始化主要就干了几件事情,合并配置,初始化生命周期,初始化事件中心,初始化渲染,初始化 data.props.computed.watcher 等等.
- Mac xlwings aem.aemsend.EventError: Command failed: The user has declined permission. (-1743)
aem.aemsend.EventError: Command failed: The user has declined permission. (-1743) 关于mac pycharm 使用xl ...
- Map.Entry的由来和使用
首先,回忆和练习一下HashMap的遍历 package Exercise.exercise; import java.util.HashMap; import java.util.Iterator; ...
- The list of list is modified unexpected, python
Be careful! The list of list is modified unexpected, python # code patch A: list = [1,2,3,4,5,6,7] p ...
- 阿里云E-HPC联合安世亚太、联科集团共建云超算生态
5月23日,2018云栖大会武汉峰会,阿里云高级技术专家刘峥和张维,对弹性计算最新上线的 serverless (无服务器化)计算技术Bazaar及基于该技术的容器服务产品 Severless Kub ...
- web应用,http协议简介,web框架
一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...
- js中元素更新value页面体现不出来的原因
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- div 上禁止复制的css实现方法
div { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-se ...