uniapp 生命周期(onLoad跟onLoadonShow的區別)
一、uniapp生命周期分兩種 :
1、應用生命周期:僅可在App.vue中監聽,在其它頁面監聽無效。
2、頁面生命周期:僅在page頁面中監聽,而單獨封裝的組件中【頁面周期無效】,但是Vue的生命周期依然有效 【Vue的生命周期在任何地方都是有效的】
二、頁面生命周期
1、頁面的加載過程是: 加載-顯示-加載完成-頁面隱藏-頁面卸載
2、頁面生命周期的出發過程: onLoad:監聽頁面加載 =》 onShow:監聽頁面顯示 =》 onReady:監聽頁面初次渲染完成 =》 onHide:監聽頁面隱藏 =》 onUnload:監聽頁面卸載
3、onLoad跟onLoadonShow的區別
(1)onShow: 監聽頁面顯示。頁面每次出現在屏幕上都觸發,包括從下級頁面點返回露出當前頁面
例如:頁面b:通過緩存跳轉到頁面a
頁面B:緩存一個變量newMember uni.setStorageSync('newMember', this.newMember)
頁面A可以接受這個參數變量:onShow() { let str = uni.getStorageSync('newMember') },
(2) onLoad:只加載一次,監聽頁面加載,其參數為上個頁面傳遞的數據,參數類型為Object(用於頁面傳參)
只加載一次 所以如果b頁面不斷的修改數據 再通過 onLoad(){ uni.navigateBack({delta: 1,}) 回到A頁面 a頁面的數據不會隨之改變
總結:A頁面跳轉到B頁面后,從二級頁面B返回該頁面A時,onLoad不會再次加載,而onshow會重新加載。
應用選擇:
1.如果加載列表頁,二級頁面對一級的列表頁面內容有修改,則以及列表函數應該在onShow中加載,否則可以選擇onLoad。
2.如果從一個頁面攜帶參數跳轉到另外一個頁面,在另一個頁面獲取參數的方式: onLoad(options){ console.log(options.xxx) },這些參數都掛在在options.
3.在一些數據變化較少的時候我們用onload
4:像這些order訂單列表數據變化及時性我們用的是onshow;
- onLoad先於onShow執行
- onLoad頁面的整個生命周期里,只執行一次
- onShow頁面的整個生命周期里,可執行多次,即每次顯示都會執行
- 獲取參數並且只請求一次的事件放在 onLoad 里。
- 當前頁面需要時時刷數據的請求多次的事件放在 onShow 里。
