当前位置:   article > 正文

小程序的页面/组件的生命周期_组件的生命周期 lifetimes里实现下拉刷新

组件的生命周期 lifetimes里实现下拉刷新

前言:

       小程序的函数方法以及生命周期

目录:

1、使用 Page 构造器注册页面 官网入口

2、使用 Component 构造器构造页面

3、App.js

4、生命周期

(1)相关

(2)流程方法

(3)应用生命周期和页面生命周期图示

5、路由变化

页面栈

路由方式


1、页面级别:使用 Page  官网入口

  • 关于小程序的退出:当用户点击小程序左上角关闭,或者按设备Home键离开微信,小程序并没有直接销毁,而是触发onHide方法进入了后台,短时间内当再次进入微信或者再次打开小程序,小程序会从后台状态进入前台,此为“热启动”。注意当小程序进入后台状态一定时间后,或者系统资源占用过高,微信会真正销毁小程序。用户第一次进入小程序或者在小程序销毁后再次进入小程序是为“冷启动”。
  • 小程序的冷启动:小程序在冷启动时会依次触发onLaunch—>onShow
  • 小程序的热启动:小程序在热启动时会触发onShow
  • 小程序关闭时:即小程序从前台进入后台时触发onHide
  • 小程序销毁时:即小程序从前台进入后台时触发onUnload
  • onLoad :页面加载时
  • onReady:页面所有内容加载完毕
  • onShow:页面显示的时候触发
  • onHide:当页面被隐藏时触发
  • onUnload:当页面卸载是触发
  1. //index.js
  2. Page({
  3. data: {
  4. text: "This is page data."
  5. },
  6. onLoad: function(options) {
  7. // 页面创建时执行
  8. },
  9. onShow: function() {
  10. // 页面出现在前台时执行
  11. },
  12. onReady: function() {
  13. // 页面首次渲染完毕时执行
  14. },
  15. onHide: function() {
  16. // 页面从前台变为后台时执行
  17. },
  18. onUnload: function() {
  19. // 页面销毁时执行
  20. },
  21. onPullDownRefresh: function() {
  22. // 触发下拉刷新时执行
  23. },
  24. onReachBottom: function() {
  25. // 页面触底时执行
  26. },
  27. onShareAppMessage: function () {
  28. // 页面被用户分享时执行
  29. },
  30. onPageScroll: function() {
  31. // 页面滚动时执行
  32. },
  33. onResize: function() {
  34. // 页面尺寸变化时执行
  35. },
  36. onTabItemTap(item) {
  37. // tab 点击时执行
  38. console.log(item.index)
  39. console.log(item.pagePath)
  40. console.log(item.text)
  41. },
  42. // 事件响应函数
  43. viewTap: function() {
  44. this.setData({
  45. text: 'Set some data for updating view.'
  46. }, function() {
  47. // this is setData callback
  48. })
  49. },
  50. // 自由数据
  51. customData: {
  52. hi: 'MINA'
  53. }
  54. })

2、封装组件内部:使用 Component 

组件内的生命周期与方法

  1. Component({
  2. data: {
  3. text: "This is page data."
  4. },
  5. methods: {
  6. onLoad: function(options) {
  7. // 页面创建时执行
  8. },
  9. onPullDownRefresh: function() {
  10. // 下拉刷新时执行
  11. },
  12. // 事件响应函数
  13. viewTap: function() {
  14. // ...
  15. }
  16. }
  17. })

组件的生命周期 lifetimes

  1. Component({
  2. lifetimes: {
  3. created: function() {
  4. //在组件实例刚刚被创建时执行
  5. },
  6. attached: function() {
  7. //在组件实例进入页面节点树时执行
  8. },
  9. ready: function() {
  10. // 在组件在视图层布局完成后执行
  11. },
  12. moved: function() {
  13. // 在组件实例被移动到节点树另一个位置时执行
  14. },
  15. detached: function() {
  16. // 在组件实例被从页面节点树移除时执行
  17. },
  18. error: function() {
  19. // 每当组件方法抛出错误时执行
  20. },
  21. },
  22. // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容
  23. attached: function() {
  24. // 在组件实例进入页面节点树时执行
  25. },
  26. detached: function() {
  27. // 在组件实例被从页面节点树移除时执行
  28. },
  29. // ...
  30. })

组件所在页面的生命周期

  1. Component({
  2. pageLifetimes: {
  3. show: function() {
  4. // 页面被展示
  5. },
  6. hide: function() {
  7. // 页面被隐藏
  8. },
  9. resize: function(size) {
  10. // 页面尺寸变化
  11. }
  12. }
  13. })

3、App.js

App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

属性类型默认值必填说明最低版本
onLaunchfunction生命周期回调——监听小程序初始化。
onShowfunction生命周期回调——监听小程序启动或切前台。
onHidefunction生命周期回调——监听小程序切后台。
onErrorfunction错误监听函数。
onPageNotFoundfunction页面不存在监听函数。1.9.90
onUnhandledRejectionfunction未处理的 Promise 拒绝事件监听函数。2.10.0
onThemeChangefunction监听系统主题变化2.11.0
其他any开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问

4、生命周期图示

(1)小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。
(2)当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。

(3)当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。

5、路由变化

在小程序中所有页面的路由全部由框架进行管理。

页面栈

框架以栈的形式维护了当前的所有页面。 当发生路由切换的时候,页面栈的表现如下:

路由方式页面栈表现
初始化新页面入栈
打开新页面新页面入栈
页面重定向当前页面出栈,新页面入栈
页面返回页面不断出栈,直到目标返回页
Tab 切换页面全部出栈,只留下新的 Tab 页面
重加载页面全部出栈,只留下新的页面

开发者可以使用 getCurrentPages() 函数获取当前页面栈。

路由方式

对于路由的触发方式以及页面生命周期函数如下:

路由方式触发时机路由前页面路由后页面
初始化小程序打开的第一个页面onLoad, onShow
打开新页面调用 API wx.navigateTo
使用组件 <navigator open-type="navigateTo"/>
onHideonLoad, onShow
页面重定向调用 API wx.redirectTo
使用组件 <navigator open-type="redirectTo"/>
onUnloadonLoad, onShow
页面返回调用 API wx.navigateBack
使用组件<navigator open-type="navigateBack">
用户按左上角返回按钮
onUnloadonShow
Tab 切换调用 API wx.switchTab
使用组件 <navigator open-type="switchTab"/>
用户切换 Tab
各种情况请参考下表
重启动调用 API wx.reLaunch
使用组件 <navigator open-type="reLaunch"/>
onUnloadonLoad, onShow

Tab 切换对应的生命周期(以 A、B 页面为 Tabbar 页面,C 是从 A 页面打开的页面,D 页面是从 C 页面打开的页面为例):

当前页面路由后页面触发的生命周期(按顺序)
AANothing happend
ABA.onHide(), B.onLoad(), B.onShow()
AB(再次打开)A.onHide(), B.onShow()
CAC.onUnload(), A.onShow()
CBC.onUnload(), B.onLoad(), B.onShow()
DBD.onUnload(), C.onUnload(), B.onLoad(), B.onShow()
D(从转发进入)AD.onUnload(), A.onLoad(), A.onShow()
D(从转发进入)BD.onUnload(), B.onLoad(), B.onShow()

Tips:

  • navigateToredirectTo 只能打开非 tabBar 页面。
  • switchTab 只能打开 tabBar 页面。
  • reLaunch 可以打开任意页面。
  • 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
  • 调用页面路由带的参数可以在目标页面的onLoad中获取。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/909711
推荐阅读
相关标签
  

闽ICP备14008679号