前言:本人是一个初学者,也是第一次写博客,敲键盘的时候还不知道发布后是什么效果,希望内容给其他初学的同学一点帮助,同时加深自己的理解。这篇随笔讲的是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:

    额外补充,当调用接口时,成功、失败与完成的回调函数将会这样执行:

    1.   成功:success  ==> complete
    2.   失败: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. 微信小程序--页面的生命周期和参数传递

    页面跳转: 1.函数 点击事件设置bindtap然后在本页面 js 设置函数 redirectTo:关闭当前页,跳转到指定页:   ( unload) navigateTo:保留当前页,跳转到指定页: ...

  2. 【Taro全实践】Taro在微信小程序中的生命周期

    一.Taro的本身生命周期 生命周期componentWillMount在微信小程序中这一生命周期方法对应页面的onLoad或入口文件app中的onLaunch componentDidMount在微 ...

  3. 微信小程序:应用生命周期

    小程序的生命周期分为应用生命周期和页面生命周期. 应用指的是一个文件,是小程序的入口文件app.js,入口文件最外层方法名称是App,页面的js文件最外层是page,组件的js文件的最外层是compo ...

  4. 微信小程序page的生命周期和音频播放及监听

    一.界面的生命周期 /** * 监听页面加载, * 页面加载中 */ onLoad:function(){ var _this = this console.log('index---------on ...

  5. 使用Appium 测试微信小程序和微信公众号方法

    由于腾讯系QQ.微信等都是基于腾讯自研X5内核,不是google原生webview,需要打开TBS内核Inspector调试功能才能用Chrome浏览器查看页面元素,并实现Appium自动化测试微信小 ...

  6. 微信小程序-页面跳转与参数传递

    QQ讨论群:785071190 微信小程序页面跳转方式有很多种,可以像HTML中a标签一样添加标签进行跳转,也可以通过js中方法进行跳转. navigator标签跳转 <view class=& ...

  7. Appium之测试微信小程序

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:Oschina.云+社区.知乎等各大平台都有. 目录 一.往期回顾 二.测试微信小程序 1.准备工作 2.操作步骤 3.注意 4.强制设置安卓的进程 ...

  8. [转] 微信小程序页面间通信的5种方式

    微信小程序页面间通的5种方式 PageModel(页面模型)对小程序而言是很重要的一个概念,从app.json中也可以看到,小程序就是由一个个页面组成的. 如上图,这是一个常见结构的小程序:首页是一个 ...

  9. 微信小程序页面跳转方法总结

    微信小程序页面跳转目前有以下方法(不全面的欢迎补充): 1. 利用小程序提供的 API 跳转: // 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面.// 注 ...

随机推荐

  1. ltp-ddt eth_switch_config学习

    # @name ALE Table test using SWITCH-CONFIG # @desc Checks default entries in ALE table and verifies ...

  2. DDD领域驱动设计初探(一):聚合

    前言:又有差不多半个月没写点什么了,感觉这样很对不起自己似的.今天看到一篇博文里面写道:越是忙人越有时间写博客.呵呵,似乎有点道理,博主为了证明自己也是忙人,这不就来学习下DDD这么一个听上去高大上的 ...

  3. CSS3 多列布局——Columns

    CSS3 多列布局——Columns 语法: columns:<column-width> || <column-count> 多列布局columns属性参数主要就两个属性参数 ...

  4. bzoj4543 [POI2014]Hotel加强版 长链剖分+树形DP

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4543 题解 这道题的弱化版 bzoj3522 [POI2014]Hotel 的做法有好几种吧. ...

  5. thinkphp 模板

    一. 模板函数  教程https://www.kancloud.cn/manual/thinkphp5/125005 我们往往需要对模板输出变量使用函数,可以使用: {$data.name|md5} ...

  6. php大文件断点续传

    该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开始. 如何分 ...

  7. BZOJ 4836: [Lydsy1704月赛]二元运算 分治FFT

    Code: #include<bits/stdc++.h> #define ll long long #define maxn 500000 #define setIO(s) freope ...

  8. Python_005(字典无极坑)

    一.字典(dict) 1.字典的定义格式:dic{key1:value1,key2,value2} :这里面key是唯一的,保存的时候,根据key计算一个内存地址,然后将key-value保存在这个地 ...

  9. bzoj 2002 Bounce 弹飞绵羊(分块)

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 11202  Solved: 5698[Subm ...

  10. save change is not permitted

    https://support.microsoft.com/en-my/help/956176/error-message-when-you-try-to-save-a-table-in-sql-se ...