// 常见的场景:打开小程序时要先获取用户数据,再调其他接口
// 步骤:
// 1、获取openid
// 2、根据openid获取用户数据
// 3、获取到用户数据后 再 调取其他接口
啥也别说,直接看代码吧:
实际开发会把很多步骤合并,我这展示就每一步详细说明
-------分割线--------------------- 以上为app.js页面------------
页面index.js(打开小程序页面栈的第一个页面)
总结:原理就是跨页面调用而已。该方法也可以使用在扫码进入的场景。只需在目标页面加上接收数据的函数init即可。
你这页面回退还要再刷新呢。所以还要写onshow。
而init恰恰做了onshow的事。所以第1次进入 onshow时,大概率还没登录成功。
而Nav几个页后,再回退到这个页,onshow就可以调用Init了。我用了另一种办法实现,就是在onshow里判断登录,不登录就等待30ms,
onLaunch 调用 getCurrentPages 拿不到 init
超级无敌优雅的方案,专门解决这个问题的
https://github.com/1977474741/vue-custom-hooks
App.onLaunch
的时候调用getCurrentPages()
,此时page
还没有生成。https://github.com/1977474741/vue-custom-hooks
我有一个想法不知道可不可行:新增一个init 页面作为启动页,登录,判断角色配置主题色之类的都放在这里
该页面UI: 正在加载配置项...
异步请求完成后再跳转到其他页面。第二次打开可以获取缓存的数据不用进入init 页面
https://github.com/1977474741/vue-custom-hooks
个人感觉不是一个很好的解决方案,每个页面有多个接口需要用户信息的话?init函数承载的压力太大了;代码可读性 粘合性太差了?不如在app.js中加一个callback?
举个例子:首页调用了10个接口 这些接口都先获取到用户的openId
https://github.com/1977474741/vue-custom-hooks
好像callback