代码的生命周期就是一个对象的生老病死,通常只程序从创建、开始、暂停、唤起、停止、写在的过程。小程序的生命周期又可分为应用生命周期和页面生命周期。在此分别介绍:

一、应用生命周期

应用生命周期指的是小程序本身的初始化加载、方法以及最终被销毁的过程

1.用户首次打开小程序,出发onLunch,用于监听小程序的初始化,整个应用生命周期中指值触发一次

2.初始化之后,出发onShow监听小程序,小程序启动或者从后台进入前台显示,会触发onShow

3.小程序从其那台进入后台,出发onHinde方法

4.小程序在后台允许一定时间,或者系统资源占用过高,会被销毁

注意:

1.App()函数用来注册一个小程序。接受Object参数,其指定小程序的生命周期回调等(最外层的整个{ }就是一个object 参数).一般有onLaunch监听小程序初始化、onShow监听小程序显示、onHide监听小程序隐藏等生命周期回调函数

2.App()必须在app.js中调用,必须调用且只能调用一次

代码:

//app,js
App(
  {
   onLaunch:function()
   {
     console.log('onLaunch监听小程序初始化.小程序初始化完成时,全局指出发一次');
   },
   onShow:function()
   {
     console.log('onShow监听小程序显示。小程序启动,或者从后台进入前台时');
   },
   onHide:function()
   {
     console.log('onHide监听小程序隐藏,小程序从前台进入后台时');
   }
  }
)

onLaunch, onShow 方法会返回一个参数对象, 里面包含了三个参数 , path,query和scene ,path是打开小程序的路径

query是打开小程序页面url的参数,scene是打开小程序的场景值

二、页面的生命周期

Page(Object)函数用来注册一个页面。接受一个 Object` 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。

1.小程序注册完成后,加载页面,触发onLoad方法。

2.页面载入后触发onShow方法,显示页面。

3.首次显示页面,会触发onReady方法,渲染页面元素和样式,一个页面只会调用一次。

4.当小程序后台运行或跳转到其他页面时,触发onHide方法。

5.当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。

6.当使用重定向方法wx.redirectTo(object)或关闭当前页返回上一页wx.navigateBack(),触发onUnload。

//index.js
Page({
  data: {
    // 页面的初始数据
    text: "This is page data."
  },
  onLoad: function(options) {
    // 生命周期回调—监听页面加载
  },
  onReady: function() {
    // 生命周期回调—监听页面初次渲染完成
  },
  onShow: function() {
    // 生命周期回调—监听页面显示
  },
  onHide: function() {
    // 生命周期回调—监听页面隐藏
  },
  onUnload: function() {
    // 生命周期回调—监听页面卸载
  },
  onPullDownRefresh: function() {
    // 监听用户下拉动作
  },
  onReachBottom: function() {
    // 页面上拉触底事件的处理函数
  },
  onShareAppMessage: function () {
    // 用户点击右上角转发
  },
  onPageScroll: function() {
    // 页面滚动触发事件的处理函数
  },
  onResize: function() {
    // 页面尺寸改变时触发
  },
  onTabItemTap(item) {
    // 当前是 tab 页时,点击 tab 时触发
    console.log(item.index)
    console.log(item.pagePath)
    console.log(item.text)
  },
  // 任意的函数,在页面的函数中用 this 可以访问
  viewTap: function() {
    this.setData({
      text: 'Set some data for updating view.'
    }, function() {
      // this is setData callback
    })
  },
  // 任意数据,在页面的函数中用 this 可以访问
  customData: {
    hi: 'MINA'
  }
})

三、小程序路由

小程序以栈的形式维护页面,当路由发生变化时页面栈的表现如下:

捕获.PNG

实际操作

1、页面A入栈

注:onReady是在onShow之后触发;

​ onReady和onLoad一样只在页面入栈时渲染一次;

2、页面A->页面B(通过redirectTo跳转,A页面出栈,B页面入栈)

​ A页面触发onUnload(注意,此处没有触发onHide);

​ B页面触发onLoad、onShow、onReady;

3、页面A->页面B(通过navigationTo跳转,A页面不出栈,B页面入栈)

​ A页面触发onHide;

​ B页面触发onLoad、onShow、onReady;

4、页面A->页面B,当页面B回到页面A(通过navigationBack返回,下面是:页面B回到页面A时触发的)

​ B页面触发onUnload;

​ A页面触发onShow;

5、页面A出栈

​ 页面A触发onUnload;

6、页面A->页面B->页面A(通过navigationTo跳转,下面是:页面B跳到页面A时触发的)

​ B页面触发onHide;

​ A页面触发onLoad、onShow、onReady;

注:此时栈为ABA三个页面,第一个页面A没有出栈。

用文字来描述的话大家可能觉得乱乱的,下面我们用表格来呈现它
注:以下中:跳到指navigateTo,重定向指redirectTo,返回指navigateBack。

1389036-20190605154132920-109749520.png

Last modification:October 23rd, 2019 at 04:50 pm
如果觉得我的文章对你有用,请随意赞赏