小程序生命周期

1、应用生命周期

  • 应用生命周期书写在app.js文件中
  • onLaunch 小程序第一次启动时触发。应用场景:用户首次进入获取用户信息,及权限
  • onShow 小程序首次显示时,或小程序与其他应用切换显隐时触发。应用场景:小程序重新显示时,重置数据或页面效果
  • onHide 小程序与其他应用切换显隐时触发。应用场景:当小程序隐藏时,关闭或暂停一些定时操作
  • onError 小程序代码出现错误时触发。应用场景:错误触发时,将错误发送到后台进行记录跟踪
  • onPageNotFound 小程序首页找不到时触发。应用场景:找不到首页时,跳转到其他页面
  • onThemeChange 微信系统切换主题时触发,默认入参包含theme属性,取值为darklight
// app.js
App({
  //小程序第一次启动时触发,此处可用于获取用户信息
  //应用场景:获取用户信息,登录校验
  onLaunch(){
    console.log('onLaunch')
  },
  //小程序显示时触发,切换应用显隐时可触发
  //应用场景:重置应用的数据或页页面效果
  onShow() {
    console.log('onShow')
  },
  //小程序被隐藏时触发
  //应用场景:定时器控制
  onHide(){
    console.log('onHide')
  },
  //小程序代码报错时触发
  //应用场景:收集应用错误信息,传给后台
  onError(err){
    console.log('onError')
    console.log(err)
  },
  //首页找不到时触发
  //应用场景:首页不存在时,可执行跳转到其他页面
  onPageNotFound(){
    wx.navigateTo({
      url: '/pages/btn/btn',
    })
    console.log('onPageNotFound')
  },
  //未处理的promise拒绝事件监听函数,当前不支持android
  onUnhandledRejection(res){
    console.log('onUnhandledRejection')
    // res.reason//error对象
    // res.promise//被拒绝的promise
  },
  //系统切换主题时触发
  //默认入参中包含theme,取值为'dark','light'
  onThemeChange(param){
    console.log(onThemeChange)
  }
})

2、页面生命周期

  • onLoad页面加载时触发,只会调用一次,函数入参中可获取页面路径中的参数。
    应用场景:发送异步请求,初始化页面数据,获取页面传参
    示例:
  onLoad(query){
    console.log('onLoad')
    console.log(query)
  }

-onShow 页面显示时触发

 onShow(){
   console.log("page-onShow")
 }
  • onReady页面初次渲染完成后触发,只会调用一次。
    对界面内容进行修改的api需在onready之后进行

  • onHide页面从前台转为后台时触发

  • onUnload 页面销毁时触发

  • onPullDownRefresh 下拉刷新时触发。
    需要在app.jsonwindow选项中或页面配置中开启enablePullDownRefresh
    可以通过wx.startPullDownRefresh触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
    当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。

  • onReachBottom 上拉加载时触发。可以在app.jsonwindow选项中或页面配置中设置触发距离onReachBottomDistance

  • onShareAppMessage 监听“发送给朋友”按钮的行为。
    只有定义了onShareAppMessage函数,弹窗中才会有发送给朋友按钮
    函数默认入参为一个对象

   {
     from:"button",//转发事件来源,button 或 menu
     target:Object,//from为button时,target指向button,否则为undefined
     webViewUrl:'',//如果有嵌入页面,则为嵌入页面的url
  }

该函数需return一个Object

{
     title:'转发标题',
     path:'转发路径',
     imageUrl:'自定义图片路径'
}
 onShareAppMessage(res){
    console.log('onShareAppMessage')
    if (res.from === 'button') {
      // 来自页面内转发按钮
      console.log(res.target)
    }
    return {
      title: '自定义转发标题',
      path: '/page/user?id=123'
    }
  }
  • onAddToFavorites 点击收藏时触发,当前页面内若含有嵌入页面,则默认入参中返回```webViewUrl``。
    此函数需要return一个Object。用于设置收藏时的标题、图片、及query传参
{
     title:'收藏标题',
     imageUrl:'http://demo.png',
     query:'name=xxx&age=xx'
}

示例:

  onAddToFavorites(res){
    console.log("onAddToFavorites")
    console.log('webViewUrl: ', res.webViewUrl)
    return {
      title: '自定义标题',
      imageUrl: 'http://demo.png',
      query: 'name=xxx&age=xxx',
    }
  }
  • onShareTimeline 监听分享到朋友圈按钮的行为,当前处于beta阶段,仅支持android系统(2021-03-23),只有定义了onShareTimeline,弹窗中才会显示分享到朋友圈按钮。此函数需return一个object,用于定义自定义分享内容
   {
      title:'朋友圈列表页上显示标题',
      query:'自定义页面路径中携带的参数',
      imageUrl:'自定义图片路径'
  }

示例:

  onShareTimeline(){
    console.log("onShareTimeline")
    return {
      title:'朋友圈列表页上显示标题',
      query:'自定义页面路径中携带的参数',
      imageUrl:'自定义图片路径'
    }
  }
  • onResize 页面尺寸发生变化时触发,指小程序发生横纵屏切换时会触发
    使小程序屏幕可以翻转,需在json文件中设置属性:
{
      "pageOrientation":"auto"
}

示例:

  onResize(){
    console.log('onResize')
  },
  • onPageScroll 页面滚动时触发
  • onTabItemTap tab页中点击自己时才会触发
    函数默认入参为:
  {
       index:'tabItem序号',
       pagePath:'tabItem的页面路径',
       text:'tabItem的按钮文字'
  }

示例:

  onTabItemTap(tab){
    console.log('onTabItemTap')
    console.log(tab.index)
    console.log(tab.pagePath)
    console.log(tab.text)
  }

3、组件生命周期

  • 组件中的生命周期写在lifetimes
  • created 组件刚刚被创建时触发,不可使用setData,常用于给组件this添加自定义属性字段
  • attached组件初始化完毕后触发,绝大多数初始化工作此处进行
  • ready 在组件在视图层布局完成后执行,个人理解类似于vue中的mounted
  • moved在组件实例被移动到节点树另一个位置时执行
  • detached组件销毁时触发 ,类vue中的destroyed
  • error 每当组件方法抛出错误时执行
    示例:
lifetimes: {
    attached: function() {
      // 在组件实例进入页面节点树时执行
    },
    detached: function() {
      // 在组件实例被从页面节点树移除时执行
    },
  }

4、组件所在页面的生命周期

  • show 组件所在的页面被展示时执行
  • hide 组件所在的页面被隐藏时执行
  • resize 组件所在的页面尺寸变化时执行
Component({
  pageLifetimes: {
    show: function() {
      // 页面被展示
    },
    hide: function() {
      // 页面被隐藏
    },
    resize: function(size) {
      // 页面尺寸变化
    }
  }
})

5、小程序生命周期图示

mini-pro-lifeTime.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,564评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,217评论 1 3
  • 没事就多看看书,因为腹有诗书气自华,读书万卷始通神。没事就多出去旅游,别因为没钱而找借口,因为只要你省吃俭用,来...
    向阳之心阅读 4,784评论 3 11
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 125,027评论 2 7