前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序 | 4-生命周期

小程序 | 4-生命周期

作者头像
CnPeng
发布2021-04-26 11:20:20
5970
发布2021-04-26 11:20:20
举报
文章被收录于专栏:CnPengDevCnPengDev

1. 小程序的启动流程

了解小程序的启动流程之后,就知道了代码的执行顺序:

2. 小程序生命周期

《小程序的生命周期》中主要的周期有:

  • onLaunch(Object object)

小程序初始化完成时触发,全局只触发一次。参数也可以使用 wx.getLaunchOptionsSync 获取。

参数:与 wx.getLaunchOptionsSync 一致

  • onShow(Object object)

小程序启动,或从后台进入前台显示时触发。也可以使用 wx.onAppShow 绑定监听。

参数:与 wx.onAppShow 一致

  • onHide()

小程序从前台进入后台时触发。也可以使用 wx.onAppHide 绑定监听。

  • onError(String error)

小程序发生脚本错误或 API 调用报错时触发。也可以使用 wx.onError 绑定监听。

参数:与 wx.onError 一致

小程序的生命周期函数在 app.js 文件的 App 节点中声明和使用。

3. 注册小程序实例

即启动流程中的 注册 App() .

每个小程序都需要在 app.js 中调用 App 方法注册小程序实例。

在注册实例时,我们通常可以做以下事情:

  • 判断小程序的进入场景
  • 监听生命周期函数,在生命周期中执行对应的业务逻辑,比如在某个生命周期函数中获取微信用户的信息。
  • 因为 App() 实例只有一个,并且是全局共享的(单例对象)。所以我们可以将一些共享数据放在其中的 globaldata 节点中。

小程序后台存活时间、启动场景分类

3.1. 如何确定场景?

onLaunchonShow 生命周期回调函数中,会有 options 参数,其中有 sence

在上图中,获取到 sence 对应的代码之后,就可以根据 小程序启动场景分类 的说明获知是如何打开小程序的。

onLaunch 中也可以增加 options 并做场景判断。

3.2. 监听生命周期

监听生命周期之后,可以做一些必要的处理。

比如在 onLaunch 或 onShow 中获取用户信息。

代码语言:javascript
复制
App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  }
}

3.3. 获取用户信息的几种方式:

方式1:

  • wx.getUserInfo

方式2:

  • button 组件中,将 open-type 改成 getUserInfo,并且绑定 bindgetuserinfo 这个事件函数去获取信息。(这种方式必须由用户触发按钮的点击)

方式3:

使用 open-data 组件。这种方式仅做展示,无法传递给我们自己的函数。

3.4. 注册实例时定义全局变量


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CnPeng 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 小程序的启动流程
  • 2. 小程序生命周期
  • 3. 注册小程序实例
    • 3.1. 如何确定场景?
      • 3.2. 监听生命周期
        • 3.3. 获取用户信息的几种方式:
          • 3.4. 注册实例时定义全局变量
          相关产品与服务
          云开发 CloudBase
          云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档