微信小程序生命周期函数
请参考:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/app.html
App声明周期函数
onLaunch(options):
1.
调用时机:小程序被加载完毕的时候调用。这个方法一般用来做一些初始化的事情。比如获取用户信息、获取
历史缓存信息、获取小程序打开来源等。
2.
参数:
|
参数
|
类型
|
说明
| | :--- | :--- | :--- | | path | String |
打开小程序的路径
| | query | Object |
打开小程序的
query |
| scene | Number |
打开小程序的场景值
| | shareTicket | String | shareTicket
,详见 获取更多转发信息
| |
referrerInfo | Object |
当场景为由从另一个小程序或公众号或
App
打开时,返回此字段
| | referrerInfo.appId |
String |
来源小程序或公众号或
App
的
appId
,详见下方说明
| | referrerInfo.extraData | Object |
来源小程序传
过来的数据,
scene=1037
或
1038
时支持
|
onShow(options):
1.
调用时机:小程序启动,或从后台进入前台显示时调用。如果想要在小程序每次进入到前台的时候都执行一些
事情,那么可以把代码放在这个里面。比如一些实时动态更改的数据,用户每次进来都要从服务器更新,那么
我们就可以在这个里面做。
2.
参数:同
onLoad
。
onHide():
1.
调用时机:小程序被切换到后台(包括微信自身被切换到后台或者小程序暂时被切换到后台时)。可以在这个
方法中做一些数据的保存。
2.
参数:无。
onError(String error):
1.
调用时机:小程序发生脚本错误,或者
api
调用失败时触发。在小程序发生错误的时候,会把错误信息发送到
这个函数中,所以可以在这个函数中做一些错误收集。
2.
参数:
error
。
onPageNotFound(Object):
1.
调用时机:小程序要打开的页面不存在时触发。一般在代码更新的时候,有些页面被删除了,但是其他地方没
有改过来的情况下会发生这种情况,或者一些活动页面,活动结束后被关掉了。也可以在这个里面做一些错误
的收集和页面的重新跳转。
2.
参数: | 字段
|
类型
|
说明
| | :--- | :--- | :--- | | path | String |
不存在页面的路径
| | query | Object |
打开不存在页面的
query | | isEntryPage | Boolean |
是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置
的分享页面)
|
3.
开发者可以在
onPageNotFound
回调中进行重定向处理,但必须在回调中同步处理,异步处理(例如
setTimeout
异步执行)无效。示例代码:
App({onPageNotFound(res) {wx.redirectTo({url: 'pages/...'}) // 如果是 tabbar 页面,请使用 wx.switchTab}})
4.
注意:如果开发者没有添加
onPageNotFound
监听,当跳转页面不存在时,将推入微信客户端原生的页面不
存在提示页面。 如果
onPageNotFound
回调中又重定向到另一个不存在的页面,将推入微信客户端原生的页
面不存在提示页面,并且不再回调
onPageNotFound
。
getApp():
获取当前的
app
对象。一般在其他的
page
页面中调用。有以下两个注意点:
1.
不要在定义于
App()
内的函数中调用
getApp()
,使用
this
就可以拿到
app
实例。
2.
通过
getApp()
获取实例之后,不要私自调用生命周期函数。
Page对象
详情请参考:
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html
Page对象作用:
Page(Object)
函数用来注册一个页面。接受一个
Object
类型参数,其指定页面的初始数据、生命周期回调、事件
处理函数等。
数据渲染:
需要放在模板中进行渲染的数据,需要放在
Page
对象的
data
属性中。示例代码如下:
Page({data: {person: {username: " 知了课堂 " ,age: 18}}})
<view></view>
如果以后想要修改
data
中的值,应该使用
setData
方法。
setData
函数用于将数据从逻辑层发送到视图层(异
步),同时改变对应的
this.data
的值(同步)。注意事项:
1.
直接修改
this.data
而不调用
this.setData
是无法改变页面的状态的,还会造成数据不一致。
2.
放到
data
中的值,只能使用可以
JSON
序列化的:字符串,数字,布尔值,对象,数组。否则将不会渲染。
3.
其中
key
可以以数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如
array[2].message
,
a.b.c.d
,并且不需要在
this.data
中预先定义。
Page生命周期函数:
onLoad(Object query):
页面加载时触发。一个页面只会调用一次,可以在
onLoad
的参数中获取打开当前页面路径中的参数。一般建议在
这个函数中做一些页面的数据初始化工作。
onShow():
页面显示
/
切入前台时触发。比如新推入了一个新的页面,那么原来的页面就处于后台,这时候如果把新页面又移
除掉,那么下面的页面就会调用
onShow
方法。
onReady():
页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互了。对界面内
容进行设置的
API
如
wx.setNavigationBarTitleText
,比较合适在这个里面执行。
onHide()
页面隐藏
/
切入后台时触发。如
navigateTo
或底部
tab
切换到其他页面,小程序切入后台等。
onUnload()
页面卸载时触发。如
redirectTo
或
navigateBack
到其他页面时。
路由:
在小程序中所有页面的路由全部由框架进行管理。
getCurrentPages()
可以获取当前状态下的页面栈。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端