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

    1.ereg — 正则表达式匹配 此函数遇 %00 截断. <?php $a = $_GET['pwd']; var_dump(ereg ("^[0-9]+$", $a)); ...

  2. 在父组件中,直接获取子组件数据-vue

    1.通过 $ref 获取 主父组件中: <x-test ref="ch"></x-test> import XTest from '@/components ...

  3. CF671D Roads in Yusland

    一道很玄妙的题= = 我们考虑先考虑DP 那么有$f[x]=min(c+\sum f[y])$ $f[x]$表示覆盖x的子树和x->fa[x]的所有边最小代价 我们枚举一条边c覆盖的x-> ...

  4. 容器(collection)初步

    容器(集合)的分类: 泛型(generic):本质是数据类型的参数化(提前告诉编译器,在调用泛型时必须传入实际类型) 例:E即为在主函数中定义的传入的实际类型 class MyCollection&l ...

  5. maven 自动编译脚本

    在maven工程根目录创建windows批处理脚本文件,例如tool.bat,内容如下 @echo off color 1f :menu echo -------------------------- ...

  6. centos 7 网卡绑定 bond0 开机无法自启

    https://blog.csdn.net/u012881151/article/details/54910847 1.环境CentOS Linux release 7.2.1511 (Core)li ...

  7. mysql版本

    $ mysql Welcome to the MariaDB monitor.  Commands end with ; or \g. Your MySQL connection id is 4791 ...

  8. 20180910-Java 文档注释

    Java 文档注释 Java只是三种注释方式.前两种分别是// 和/* */,第三种被称作说明注释,它以/** 开始,以 */结束. // /* */ /** */ 说明注释允许你在程序中嵌入关于程序 ...

  9. VMware Workstation 官方正式版及激活密钥

    热门虚拟机软件VMware Workstation Pro现已更新至14.1.2,14.0主要更新了诸多客户机操作系统版本,此外全面兼容Wind10创建者更新.12.0之后属于大型更新,专门为Win1 ...

  10. JS-让浏览器兼容ES6特性

    babel:将 ES6 翻译为 ES5 PS:ie 还不支持 import 和 export 还是用 gulp 打包一下吧