逻辑层(app service)-小程序注册

小程序注册

  • 每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、错误监听和页面不存在监听函数等。
  • 整个小程序只有一个 App 实例,是全部页面共享的。

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

App({
  onLaunch (options) {
    // Do something initial when launch.
  },
  onShow (options) {
    // Do something when show.
  },
  onHide () {
    // Do something when hide.
  },
  onError (msg) {
    console.log(msg)
  },
  globalData: 'I am global data'
})

App实例中参数

类型: Object
示例:

App({
  onLaunch (options) { // 注意该钩子只能在根目录下app.json调用,且全局只触发一次
  },
  onShow (options) {
    console.log(wx.getLaunchOptionsSync());
  },
  onHide () {
  },
  onError () {
  },
  globalData: {
    userInfo: null
  }
})

生命周期钩子

属性类型必填说明被调用时传入的参数最低版本
onLaunchfunction生命周期回调——监听小程序初始化。options
onShowfunction生命周期回调——监听小程序启动或切前台。options
onHidefunction生命周期回调——监听小程序切后台。

钩子中的参数:

01.在onLanuch及onShow钩子调用成功后,函数会接受一个参数options

02.实际上该参数即wx.getLaunchOptionsSync()获取的返回值一致

(类型:object)

属性类型说明
pathstring小程序切前台的路径 (代码包路径)
scenenumber小程序切前台的场景值
queryObject小程序切前台的 query 参数
shareTicketstringshareTicket,详见获取更多转发信息
referrerInfoObject来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 {}。(下面说明)

referrerInfo属性:

属性类型说明
appIdstring来源小程序、公众号或 App 的 appId
extraDataObject来源小程序传过来的数据,scene=1037或1038时支持

返回有效 referrerInfo 的场景

场景值场景appId含义
1020公众号 profile 页相关小程序列表来源公众号
1035公众号自定义菜单来源公众号
1036App 分享消息卡片来源App
1037小程序打开小程序来源小程序
1038从另一个小程序返回来源小程序
1043公众号模板消息来源公众号

注意
部分版本在无referrerInfo的时候会返回 undefined,建议使用 options.referrerInfo && options.referrerInfo.appId 进行判断。

其他类型钩子

属性类型说明版本
onErrorfunction错误监听函数。
onPageNotFoundfunction页面不存在监听函数。1.9.90
onUnhandledRejectionfunction未处理的 Promise 拒绝事件监听函数。2.10.0
onThemeChangefunction监听系统主题变化2.11.0
其他any开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问

实测: (版本 2.13.2)

  • onError钩子无法捕获错误信息
  • onPageNotFound当跳转到一个不存在页面时无法触发该钩子
  • onUnhandledRejection钩子:
    (该钩子函数接收一个参数)
属性类型说明
reasonstring拒绝原因,一般是一个 Error 对象
promisePromise. 被拒绝的 Promise 对象

示例:

App({
  onlaunch () {
    console.log(wx.getLaunchOptionsSync())
  },
  onUnhandledRejection (options) {
  	//由于参数中属性promise是一个Promise(状态为reject)对象
    options.promise.catch(err => {
      console.log(err)
    })
  },
  globalData: {
    userInfo: null
  }
})
打印示例:{errMsg: "navigateTo:fail page "pages/aa/index" is not found"}
注意 安卓平台暂时不支持该事件 所有的 unhandledRejection 都可以被这一监听捕获,但只有 Error 类型的才会在小程序后台触发报警。
  • onThemeChange
    前置:
    在全局app.json下配置"darkmode": true
    该钩子函数接收一个参数:options
属性类型说明
themestring系统当前的主题,取值为light或dark

函数式调用钩子

  • onLaunch钩子
    函数式: App.onLaunch
  • onAppShow钩子 或 onShow钩子
    函数式: wx.onAppShow() 或 wx.onShow()
  • onAppHide钩子
    函数式: wx.onAppHide() 或 wx.onHide()
    ·············

    注意:无论是钩子形式还是函数式调用,能接收的参数都是一致的。
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页