不論是app還是小程序唉锌,生命周期是非常重要的知識點容为。
uni-app 支持如下生命周期函數(shù):
頁面的生命周期
onLoad
監(jiān)聽頁面加載弄砍,其參數(shù)為上個頁面?zhèn)鬟f的數(shù)據(jù)披坏,參數(shù)類型為object(用于頁面?zhèn)鲄ⅲ瑓⒖际纠?br>
onShow
監(jiān)聽頁面顯示
onReady
監(jiān)聽頁面初次渲染完成
onHide
監(jiān)聽頁面隱藏
onUnload
監(jiān)聽頁面卸載
onPullDownRefresh
監(jiān)聽用戶下拉動作
onReachBottom
頁面上拉觸底事件的處理函數(shù)
onShareAppMessage
用戶點擊右上角分享 微信小程序
onPageScroll
監(jiān)聽頁面滾動
onTabItemTap
當(dāng)前是 tab 頁時馏慨,點擊 tab 時觸發(fā)
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
console.log('頁面加載')
},
onShow() {
console.log('頁面顯示')
},
onReady(){
console.log('頁面初次顯示')
},
onHide() {
console.log('頁面隱藏')
},
onUnload() {
console.log('頁面卸載')
},
onBackPress(){
console.log('頁面返回...')
},
onShareAppMessage() {
console.log('分享!')
},
onReachBottom() {
console.log('下拉加載...')
},
onPageScroll(){
console.log('頁面滾動...')
},
onPullDownRefresh() {
console.log('上拉刷新...')
uni.stopPullDownRefresh();
},
// #ifdef APP-PLUS
onNavigationBarButtonTap(){
},
// #endif
methods: {
tap(){
console.log('tap點擊!');
}
}
}
</script>
組件的生命周期
beforeCreate
組件初始化埂淮,但數(shù)據(jù)原生觀測、自定義觀測(event\watcher)沒生成之前写隶。 未完全創(chuàng)建階段
created
組件創(chuàng)建后倔撞,但還未掛載 完全創(chuàng)建階段
beforeMount
組件渲染后,掛載前樟澜。 渲染后待掛載
mounted
組件掛載到頁面 可用 vm.$el 訪問 掛載OK
beforeUpdate
虛擬 DOM 重新渲染和打補丁之前 再次渲染前
updated
組件 DOM 已經(jīng)更新 再次渲染后
activated
keep-alive 組件激活時調(diào)用误窖。 當(dāng)前組件被激活:顯示
deactivated
keep-alive 組件停用時調(diào)用。 當(dāng)前組件隱藏
beforeDestroy
實例銷毀之前調(diào)用秩贰。實例仍然完全可用霹俺。 銷毀前
destroy
Vue 實例銷毀后調(diào)用
注:掛載階段,先渲染組件毒费,然后掛載組件丙唧。
<script>
export default {
data() {
return {
title: 'Hello'
}
},
props:{},
beforeCreate() {
console.log('組件初始化,未完全創(chuàng)建階段')
},
created() {
console.log('組件創(chuàng)建后,但還未掛載')
},
beforeMount(){
console.log('渲染后待掛載')
},
mounted() {
console.log('組件掛載到頁面OK,可用 vm.$el 訪問')
},
beforeUpdate() {
console.log('再次渲染前')
},
updated(){
console.log('再次渲染后')
},
activated() {
console.log('當(dāng)前組件被激活:顯示')
},
deactivated() {
console.log('當(dāng)前組件隱藏')
},
beforeDestroy(){
console.log('銷毀前')
},
destroy() {
console.log('銷毀后')
},
methods: {
tap(){
console.log('tap點擊!');
}
}
}
</script>
ps:
https://blog.csdn.net/FantasyWeirdo/article/details/107058982