微信小程序(三),小程序的生命週期

每個小程序都需要在 app.js 中調用 App 方法註冊小程序實例,綁定生命週期回調函數、錯誤監聽和頁面不存在監聽函數等。

 

            /** 生命週期回調—監聽頁面加載
             *
             * 頁面加載時觸發。一個頁面只會調用一次,可以在 onLoad 的參數中獲取打開當前頁面路徑            
            中的參數。
             */
         onLoad(
             /** 打開當前頁面路徑中的參數 */
                query: Record<string, string | undefined>,
            ): void
            /** 生命週期回調—監聽頁面顯示
             *
             * 頁面顯示/切入前臺時觸發。
             */
        onShow(): void
            /** 生命週期回調—監聽頁面初次渲染完成
            *
            * 頁面初次渲染完成時觸發。一個頁面只會調用一次,代表頁面已經準備妥當,可以和視圖層進 
            行交互。
            *

           * 注意:對界面內容進行設置的 API 如`wx.setNavigationBarTitle`,請在`onReady`之後 
             進行。
              */
         onReady(): void
            /** 生命週期回調—監聽頁面隱藏
             *
             * 頁面隱藏/切入後臺時觸發。 如 `navigateTo` 或底部 `tab` 切換到其他頁面,小程序切 
                入後臺等。
             */
         onHide(): void
            /** 生命週期回調—監聽頁面卸載
             *
             * 頁面卸載時觸發。如`redirectTo`或`navigateBack`到其他頁面時。
             */
         onUnload(): void
            /** 監聽用戶下拉動作
             *
             * 監聽用戶下拉刷新事件。
             * - 需要在`app.json`的`window`選項中或頁面配置中開啓`enablePullDownRefresh`。
             * - 可以通過`wx.startPullDownRefresh`觸發下拉刷新,調用後觸發下拉刷新動畫,效果 
                與用戶手動下拉刷新一致。
             * - 當處理完數據刷新後,`wx.stopPullDownRefresh`可以停止當前頁面的下拉刷新。
             */
        onPullDownRefresh(): void
            /** 頁面上拉觸底事件的處理函數
             *
             * 監聽用戶上拉觸底事件。
             * - 可以在`app.json`的`window`選項中或頁面配置中設置觸發距離 
              `onReachBottomDistance`。
             * - 在觸發距離內滑動期間,本事件只會被觸發一次。
             */
         onReachBottom(): void
            /** 用戶點擊右上角轉發
             *
             * 監聽用戶點擊頁面內轉發按鈕(`<button>` 組件 `open-type="share"`)或右上角菜單 
             “轉發”按鈕的行爲,並自定義轉發內容。
             *
             * **注意:只有定義了此事件處理函數,右上角菜單纔會顯示“轉發”按鈕**
             *
             * 此事件需要 return 一個 Object,用於自定義轉發內容
             */
         onShareAppMessage(
                /** 分享發起來源參數 */
                options: IShareAppMessageOption,
            ): ICustomShareContent
            /** 頁面滾動觸發事件的處理函數
             *
             * 監聽用戶滑動頁面事件。
             */
         onPageScroll(
                /** 頁面滾動參數 */
                options: IPageScrollOption,
            ): void

            /** 當前是 tab 頁時,點擊 tab 時觸發,最低基礎庫: `1.9.0` */
         onTabItemTap(
                /** tab 點擊參數 */
                options: ITabItemTapOption,
            ): void

            /** 窗口尺寸改變時觸發,最低基礎庫:`2.4.0` */
         onResize(
                /** 窗口尺寸參數 */
                options: IResizeOption,
            ): void

整個小程序只有一個 App 實例,是全部頁面共享的。開發者可以通過 getApp 方法獲取到全局唯一的 App 實例,獲取App上的數據或調用開發者註冊在 App 上的函數。

// xxx.js
const appInstance = getApp()
console.log(appInstance.globalData) // I am global data

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章