index.js
在index.js里面定义一个全局函数
//定义一个全局函数,
app.userInfoReadyCallback = res => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true,
})
}
app.userInfoReadyCallback01 = res => {
this.setData({
a:res
})
}
app.userInfoReadyCallback02 = res => {
this.setData({
a:res
})
}
app.js
在app.js里面使用全局函数
//使用一个全局函数
//为什么使用this呢,因为她就是app所以使用的是this
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
使用后就会发现在 index.js里面有 userinfo,hasUserInfo=true了
在log.js里面使用全局函数
const app = getApp()
//若果传递参数的话。那么res = aaaa111
app.userInfoReadyCallback01('aaaa111')
//如果不传递参数的话就是,res = null
app.userInfoReadyCallback02()
index.js界面里面的a的值为aaaa111,这事第一个函数
第二个函数就是 a = null
值得注意的是:
全局函数的调用是可以在任何地方,
定义函数也是
但是 当你使用全局函数的时候,如果全局函数里有setData,他就会改变定义函数所在页面 里面的data值。
可以参考这个博客:https://www.jianshu.com/p/7721305c2945,我只说了一部分而已
这个是对小程序queck start 的理解:引用于他人 很多博客都写了,咱也不知道原创是谁。!!!
如果userInfoReadyCallback方法被定义了,则说明page.onload比当前方法运行的早(page已经完成初始化),app的globalData还没有数据,通过此回调可以及时的刷新数据
如果userInfoReadyCallback方法没有被定义,则说明page.onload比当前方法运行的晚(page还没有初始化),app的globalData是有值的,可以在page.onload中取globalData里面的值