小程序生命周期指的是在小程序运行过程中,不同阶段会依次触发的一系列函数。这些函数包括应用级生命周期和页面/组件级生命周期,可以让开发者在不同的生命周期节点执行相应的操作,以便更好地控制小程序的行为和响应用户的操作。
App 生命周期
onLaunch
:小程序初始化时触发,全局只触发一次。onShow
:小程序启动或从后台进入前台显示时触发。onHide
:小程序从前台进入后台隐藏时触发。onError
:小程序发生脚本错误或 API 调用失败时触发。页面生命周期
onLoad
:页面加载时触发。onShow
:页面显示时触发。onReady
:页面初次渲染完成时触发。onHide
:页面隐藏时触发。onUnload
:页面卸载时触发,如 wx.redirectTo
或 wx.navigateBack
到其他页面时。组件生命周期
created
:组件实例被创建时触发。attached
:组件被加入到父组件中时触发。ready
:组件在视图层布局完成后触发。moved
:组件被移动到另一个节点时触发。detached
:组件实例被从页面节点树中移除时触发。以上是微信小程序的生命周期函数,这些函数可以让开发者在不同的生命周期节点执行相应的操作,以便更好地控制小程序的行为和响应用户的操作。
onLaunch
:小程序初始化时触发,全局只触发一次。通常用于进行一些初始化操作。
App({
onLaunch: function () {
console.log('小程序初始化完成')
}
})
onShow
:小程序启动或从后台进入前台显示时触发。通常用于获取用户信息、判断是否登录等操作。
App({
onShow: function (options) {
console.log('小程序显示', options)
}
})
onHide
:小程序从前台进入后台隐藏时触发。通常用于保存用户数据、暂停音乐播放等操作。
App({
onHide: function () {
console.log('小程序隐藏')
}
})
onError
:小程序发生脚本错误或 API 调用失败时触发。通常用于对错误进行处理,如记录错误日志等操作。
App({
onError: function (msg) {
console.log('小程序出错', msg)
}
})
这些生命周期函数都可以在 App()
函数中定义,并且可以根据需要进行添加和修改。
微信小程序生命周期函数的使用需要注意以下几点:
生命周期函数执行顺序:在小程序的运行过程中,不同的生命周期函数会按照一定的顺序依次触发,开发者需要根据实际需求来决定在何时执行相应的操作。
异步操作:生命周期函数中可能包含异步操作,如网络请求、定时器等。在这种情况下,需要使用回调函数或 Promise 对象等方式来保证异步操作的正确执行。
页面传参:在小程序中跳转到其他页面时,可以通过 URL 参数传递数据。开发者需要在 onLoad
函数中获取参数并进行处理。
数据缓存:在小程序中,可以使用 wx.setStorage
和 wx.getStorage
等 API 将数据保存到本地缓存中。这些数据可以在小程序的不同页面中共享和访问,可以用于存储用户信息、配置项等数据。
性能优化:在开发小程序时,应尽量避免频繁的页面跳转、渲染大量数据等操作,以提高小程序的性能和体验。
在实际开发中,需要结合具体场景来灵活使用生命周期函数,并根据实际情况进行优化和调整。
onLoad
:页面加载时触发。通常用于获取页面参数、初始化数据等操作。
Page({
onLoad: function (options) {
console.log('页面加载', options)
}
})
onShow
:页面显示时触发。通常用于刷新页面数据、重新加载组件等操作。
Page({
onShow: function () {
console.log('页面显示')
}
})
onReady
:页面初次渲染完成时触发。通常用于获取 DOM 节点、创建动画等操作。
Page({
onReady: function () {
console.log('页面渲染完成')
}
})
onUnload
:页面卸载时触发,如 wx.redirectTo
或 wx.navigateBack
到其他页面时。通常用于保存页面数据、取消订阅事件等操作。
Page({
onUnload: function () {
console.log('页面卸载')
}
})
这些生命周期函数也可以在 Page()
函数中定义,并且可以根据需要进行添加和修改。
微信小程序页面生命周期函数的执行顺序如下:
onLoad
:页面加载时触发,可以获取页面参数。onShow
:页面显示时触发,可以刷新页面数据等操作。onReady
:页面初次渲染完成时触发,可以获取 DOM 节点等操作。onHide
:页面隐藏时触发,可以保存页面数据等操作。onUnload
:页面卸载时触发,如 wx.redirectTo
或 wx.navigateBack
到其他页面时。在页面被创建后,会首先触发 onLoad
函数,然后依次触发 onShow
、onReady
等函数。当页面被隐藏时(如跳转到其他页面),会触发 onHide
函数,当页面被卸载时(如通过 wx.redirectTo
或 wx.navigateBack
返回到其他页面),会触发 onUnload
函数。
需要注意的是,在调用 wx.navigateTo
或 wx.redirectTo
跳转到另一个页面时,新页面的 onLoad
函数会在新页面打开前就已经执行了,而原来的页面的 onUnload
函数则会在新页面打开后才执行。
Component({
// 组件的属性列表,用于传递数据
properties: {
text: {
type: String,
value: 'Hello World'
}
},
// 组件的初始数据,可以通过 this.data 获取
data: {
count: 0
},
// 生命周期函数,组件被创建时触发
created: function() {
console.log('组件被创建')
},
// 生命周期函数,组件被加入到父组件中时触发
attached: function() {
console.log('组件被添加到页面')
},
// 生命周期函数,组件初次渲染完成时触发
ready: function() {
console.log('组件渲染完成')
},
// 生命周期函数,组件被移动到另一个节点时触发
moved: function() {
console.log('组件被移到其他节点')
},
// 生命周期函数,组件被从页面节点树中移除时触发
detached: function() {
console.log('组件被移除')
},
// 组件的方法列表
methods: {
handleClick: function() {
this.setData({
count: this.data.count + 1
})
}
}
})
在上面的示例中,我们定义了一个名为 my-component
的组件,并指定了它的属性列表、初始数据、生命周期函数和方法列表。具体来说:
text
的属性,用于传递文本数据,默认值为 'Hello World'
。count
的变量,用于存储计数器的值,默认值为 0
。handleClick
的方法,用于处理点击事件并更新计数器的值。通过这些生命周期函数,我们可以在不同的组件生命周期阶段执行不同的操作,以便更好地控制组件的行为和响应用户的操作。
给“前端面试题宝典”的辅导服务打下广告,我们目前有面试全流程辅导、简历指导、模拟面试、零基础辅导和付费咨询等增值服务,感兴趣的伙伴可以联系小助手(微信号:interview-fe)了解详情哦~