====== 4.App() 函数 ======
===== -#1 App() =====
App()函数用来注册一个小程序。接受一个object参数,其指定小程序的生命周期函数等。参考[[https://www.w3cschool.cn/weixinapp/weixinapp-app.html|微信小程序 注册程序 App()函数]] \\
:!: App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。
//根目录下的app.js
App({
onLaunch: function(options) {
console.log("onLaunch");
},
onShow: function(options) {
console.log("onShow");
},
onHide: function() {
console.log("onHide");
},
onError: function(msg) {
console.log(msg);
},
test: function(){
console.log("I am func from App.js");
},
globalData: {
userInfo: null,
helloFromAPP:'Hello,I am From APP.JS'
}
})
==== - object 参数 ====
:!: 最外层的整个{ }就是一个 [[https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html | object 参数]]。
=== - onLaunch() ===
小程序初始化完成时触发,全局只触发一次。参数也可以使用 [[https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html|wx.getLaunchOptionsSync]] 获取。
* 来源小程序、公众号或 App 的 appId
=== - onShow() ===
小程序启动,或从后台进入前台显示时触发。也可以使用 [[https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onAppShow.html|wx.onAppShow]] 绑定监听。
===== -#2 getApp() =====
开发者可以通过 getApp 方法获取到全局唯一的 App 示例,获取App上的数据或调用开发者注册在 App 上的函数。
:?: 在其他子页面如何使用呢?
// 其他文件下的index.js
var app = getApp();
console.log(app.globalData.helloFromApp); // 调用全局变量
app.test(); // 调用全局方法
{{ :微信小程序:编译器.png?400 |}}
* App() 必须在 app.js 中注册,且不能注册多个。
* 不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。[[https://blog.csdn.net/caseywei/article/details/85263712|微信小程序App()方法与getApp()方法]]
this.globalData.userInfo = res.userInfo
不要在 onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。 \\
===== -#3 GlobalData =====
如果希望在各个页面之间共同使用某些信息,并且可以对共享数据进行修改设置,以便于其他页面根据数据变化进行对应的调整,最好使用全局数据globalData。\\
==== - 在app.js文件 ====
在app.js文件中,怎样设置和修改。设置其实跟在其他js文件中设置data值是一样的:[[https://www.cnblogs.com/jiangtengteng/p/10531297.html|微信小程序 如何使用globalData]] \\
//app.js
App({
globalData: {
name: '张三',
age: 18
}
})
根据自己的需求,设置任何数据。在app.js中读取globalData,使用this就可以 \\
//app.js
App({
globalData: {
name: '张三',
age: 18
},
onLoad: function(){
console.log(this.globalData.name);
}
})
如果我们需要在app.js中修改globalData,只需要给对应的变量重新赋值就可以 \\
//app.js
App({
globalData: {
name: '张三',
age: 18
},
onLoad: function(){
this.globalData.name = '李四'
}
})
====- 其他页面 ====
在其他页面读取以及修改globalData。不论是读取还是修改,首先需要在应用的页面js文件中,引用app()实例,所以在js文件中,第一句要写上这句 \\
var app = getApp();
然后 \\
//index.js
var app = getApp();
Page({
onLoad: function() {
console.log(app.globalData.name);
}
})