4.小程序:app与page生命周期执行顺序

download.jpg

前因

今天碰到一个需求, 用户在注册后,第二次进入小程序,如果用户信息未完善将弹出弹窗,提示用户完善信息。

实现逻辑:
我在数据库中存储一个字段again, 在app.js中调用wx.login方法,获取用户信息,赋值again,然后在弹窗组件ready函数中获取appData中again变量进行判断。

然后发现弹窗不会弹窗。

生命周期

首先我们看看小程序生命周期有哪些:

App

  1. onLaunch
  2. onShow
  3. onHide

Page

  1. onLoad
  2. onShow
  3. onReady
  4. onHide
  5. onUnload

Component

  1. created
  2. attached
  3. ready
  4. moved
  5. detached

按照我们的想法,生命周期是这样的:

App(onLaunch) -> Page(onLoad) -> Component(ready)

但其实并不然,小程序的加载顺序是这样的:

首先执行 App.onLaunch -> App.onShow

其次执行 Component.created -> Component.attached

再执行 Page.onLoad -> Page.onShow

最后 执行 Component.ready -> Page.onReady

所以当页面中包含组件时,组件的生命周期(包括pageLifetimes)总是优先于页面,Behaviors生命周期优先于组件的生命周期。

最后我用setInterval去完成需求。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享