不論是app還是小程序,生命周期是非常重要的知識點。
uni-app 支持如下生命周期函數:
頁面的生命周期
onLoad 監聽頁面加載,其參數為上個頁面傳遞的數據,參數類型為object(用於頁面傳參),參考示例onShow 監聽頁面顯示onReady 監聽頁面初次渲染完成onHide 監聽頁面隱藏onUnload 監聽頁面卸載onPullDownRefresh 監聽用戶下拉動作onReachBottom 頁面上拉觸底事件的處理函數onShareAppMessage 用戶點擊右上角分享 微信小程序onPageScroll 監聽頁面滾動onTabItemTap 當前是 tab 頁時,點擊 tab 時觸發
1 <script> 2 export default { 3 data() { 4 return { 5 title: 'Hello' 6 } 7 }, 8 onLoad() { 9 console.log('頁面加載') 10 }, 11 onShow() { 12 console.log('頁面顯示') 13 }, 14 onReady(){ 15 console.log('頁面初次顯示') 16 }, 17 onHide() { 18 console.log('頁面隱藏') 19 }, 20 onUnload() { 21 console.log('頁面卸載') 22 }, 23 onBackPress(){ 24 console.log('頁面返回...') 25 }, 26 onShareAppMessage() { 27 console.log('分享!') 28 }, 29 onReachBottom() { 30 console.log('下拉加載...') 31 }, 32 onPageScroll(){ 33 console.log('頁面滾動...') 34 }, 35 onPullDownRefresh() { 36 console.log('上拉刷新...') 37 uni.stopPullDownRefresh(); 38 }, 39 40 // #ifdef APP-PLUS 41 onNavigationBarButtonTap(){ 42 43 }, 44 // #endif 45 46 methods: { 47 tap(){ 48 console.log('tap點擊!'); 49 } 50 } 51 } 52 </script>
組件的生命周期
beforeCreate 組件初始化,但數據原生觀測、自定義觀測(event\watcher)沒生成之前。 未完全創建階段created 組件創建后,但還未掛載 完全創建階段beforeMount 組件渲染后,掛載前。 渲染后待掛載mounted 組件掛載到頁面 可用 vm.$el 訪問 掛載OKbeforeUpdate 虛擬 DOM 重新渲染和打補丁之前 再次渲染前updated 組件 DOM 已經更新 再次渲染后activated keep-alive 組件激活時調用。 當前組件被激活:顯示deactivated keep-alive 組件停用時調用。 當前組件隱藏beforeDestroy 實例銷毀之前調用。實例仍然完全可用。 銷毀前destroy Vue 實例銷毀后調用
注:掛載階段,先渲染組件,然后掛載組件。
<script>
export default {
data() {
return {
title: 'Hello'
}
},
props:{},
beforeCreate() {
console.log('組件初始化,未完全創建階段')
},
created() {
console.log('組件創建后,但還未掛載')
},
beforeMount(){
console.log('渲染后待掛載')
},
mounted() {
console.log('組件掛載到頁面OK,可用 vm.$el 訪問')
},
beforeUpdate() {
console.log('再次渲染前')
},
updated(){
console.log('再次渲染后')
},
activated() {
console.log('當前組件被激活:顯示')
},
deactivated() {
console.log('當前組件隱藏')
},
beforeDestroy(){
console.log('銷毀前')
},
destroy() {
console.log('銷毀后')
},
methods: {
tap(){
console.log('tap點擊!');
}
}
}
</script>
