目錄
一、生命週期
首頁 微信小程式 小程式開發 一起聊聊微信小程式中的生命週期(函數)

一起聊聊微信小程式中的生命週期(函數)

Nov 01, 2021 am 10:24 AM
小程式 微信 生命週期

這篇文章帶大家一起看看微信小程式中的生命週期,都有哪些生命週期函數,來聊一聊其從觸發時機及其所做的事情,希望對大家有所幫助!

一起聊聊微信小程式中的生命週期(函數)

一、生命週期

#1. 什麼是生命週期?

生命週期(Life Cycle) 是指一個物件從創建-> 運行-> 銷毀的整個階段,強調的是一個時間段

2. 小程式的生命週期

  • 小程式的啟動,表示生命週期的開始
  • 小程式的關閉,表示生命週期的結束
  • ##中間小程式運作的過程,就是小程式的生命週期

3. 小程式生命週期分類

  • 應用生命週期 特指小程式從啟動 --> 執行 --> 銷毀的過程

  • 頁面生命週期 特指小程式中,每個頁面的載入--> 渲染--> 銷毀的過程

  • #注意:頁面的生命週期範圍較小,應用程式的生命週期範圍較大

一起聊聊微信小程式中的生命週期(函數)

#二、生命週期函數

#1. 什麼是生命週期函數?

  • 小程式框架提供的內建函數,會伴隨著生命週期,自動依序執行

  • 生命週期函數的作用:

      允許程式設計師在特定的生命週期時間點上,執行某些特定的操作
    • 例如,頁面剛載入的時候,在生命週期函數中自動發起資料請求,取得目前頁面的資料
  • 注意:生命週期強調的是時間段,生命週期函數強調的是時間點。

2. 應用程式的生命週期函數

  • app.js 是小程式執行的入口文件,在app.js 中必須呼叫App() 函數,且只能呼叫一次。其中,App() 函數是用來註冊並執行小程式的

  • App(Object) 函數接收一個Object 參數,可以透過這個Object 參數,指定小程式的生命週期函數

  • app.js 中的程式碼

程式碼如下(範例):

App({

  /**
   * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
   */
  onLaunch: function () { },

  /**
   * 当小程序启动,或从后台进入前台显示,会触发 onShow
   */
  onShow: function (options) { },

  /**
   * 当小程序从前台进入后台,会触发 onHide
   */
  onHide: function () { },

  /**
   * 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
   */
  onError: function (msg) { }
})

#3.  頁面的生命週期

  • 每個小程式頁面,必須擁有自己的

    .js 文件,且必須呼叫Page() 函數,否則報錯。其中Page() 函數用來註冊小程式頁面

  • #Page(Object) 函數接收一個Object 參數,可以透過這個Object 參數,指定頁面的生命週期函數

  • #page.js

  • ##程式碼如下(範例):
//index.js
//获取应用实例
const app = getApp()

Page({

  /**
   * 页面的初始数据
   */
  data: { },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) { },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () { },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () { },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () { },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () { },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () { },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () { },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () { }
})

4. 元件的全部生命週期元件有哪些生命週期?分別是什麼時候?

生命週期在元件實例剛被建立時執行#在元件實例進入頁面節點樹時執行ready無在元件在視圖層佈局完成後執行moved無在元件實例被移到節點樹另一個位置時執行 #在元件實例被從頁面節點樹移除時執行每當元件方法拋出錯誤時執行
#參數描述
#created
attached
detached
errorObject Error
#########

5. 组件主要的生命周期函数

data在哪个生命周期中初始化完毕?

组件的生命周期,指的是组件自身的一些函数,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。

最重要的生命周期是 created, attached, detached ,包含一个组件实例生命流程的最主要时间点。

  • 组件实例刚刚被创建好时, created 生命周期被触发

    • 此时还不能调用 setData
    • 通常情况下,这个生命周期只应该用于给组件 this 添加一些自定义属性字段
  • 在组件完全初始化完毕、进入页面节点树后, attached 生命周期被触发

    • this.data 已被初始化完毕
    • 这个生命周期很有用,绝大多数初始化工作可以在这个时机进行
  • 在组件离开页面节点树后, detached 生命周期被触发

    • 退出一个页面时,会触发页面内每个自定义组件的detached 生命周期被触发
    • 如果组件还在页面节点树中,则 detached 会被触发。
    • 此时适合做一些清理性质的工作

6. lifetimes 节点

同时以两种方式声明生命周期函数,会执行哪个?

生命周期方法可以直接定义在 Component 构造器的第一级参数中,组件的的生命周期也可以在 lifetimes 字段内进行声明(这是推荐的方式,其优先级最高)

lifetimes: {
  attached () {
    console.log('在组件实例进入页面节点树')
  },
  detached () {
    console.log('在组件实例被从页面节点树移除')
  }
},

attached () {
  console.log('~~~~~在组件实例进入页面节点树')
},
detached () {
  console.log('~~~~~在组件实例被从页面节点树移除')
},

/**
 * 组件的初始数据
 */
data: {
  // rgb 的颜色值对象
  _rgb: {
    r: 0,
    g: 0,
    b: 0
  },
  // 根据 rgb 对象的三个属性,动态计算 fullColor 的值
  fullColor: '0, 0, 0'
}

更多编程相关知识,请访问:编程入门!!

以上是一起聊聊微信小程式中的生命週期(函數)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1596
276
我可以同時在兩部手機上使用微信嗎? 我可以同時在兩部手機上使用微信嗎? Jul 11, 2025 am 03:28 AM

是的,但有限制。 ①你可以同時在iPhone和安卓手機登錄同一賬號,但最新設備登錄會使最早會話下線;②可在手機與電腦桌面端同時登錄,但功能不同步;③使用第三方工具或雙應用功能雖能實現兩手機登錄,但非官方支持且可能違規;④替代方案包括用網頁版/桌面版搭配主手機,或通過雲備份、文件工具轉移聊天記錄,部分安卓機還可利用“雙應用”運行兩個賬號實例。

如何用PHP搭建社交分享功能 PHP分享接口集成實戰 如何用PHP搭建社交分享功能 PHP分享接口集成實戰 Jul 25, 2025 pm 08:51 PM

在PHP中搭建社交分享功能的核心方法是通過動態生成符合各平台要求的分享鏈接。 1.首先獲取當前頁面或指定的URL及文章信息;2.使用urlencode對參數進行編碼;3.根據各平台協議拼接生成分享鏈接;4.在前端展示鏈接供用戶點擊分享;5.動態生成頁面OG標籤優化分享內容展示;6.務必對用戶輸入進行轉義以防止XSS攻擊。該方法無需複雜認證,維護成本低,適用於大多數內容分享需求。

PHP實現商品庫存管理變現 PHP庫存同步與報警機制 PHP實現商品庫存管理變現 PHP庫存同步與報警機制 Jul 25, 2025 pm 08:30 PM

PHP通過數據庫事務與FORUPDATE行鎖確保庫存扣減原子性,防止高並發超賣;2.多平台庫存一致性需依賴中心化管理與事件驅動同步,結合API/Webhook通知及消息隊列保障數據可靠傳遞;3.報警機制應分場景設置低庫存、零/負庫存、滯銷、補貨週期和異常波動策略,並按緊急程度選擇釘釘、短信或郵件通知責任人,且報警信息需完整明確,以實現業務適配與快速響應。

穩定幣怎麼交易_新手買入賣出全流程圖解 穩定幣怎麼交易_新手買入賣出全流程圖解 Jul 18, 2025 am 06:00 AM

穩定幣交易流程包括註冊交易所、完成認證、購買或賣出步驟。首先選擇可信交易所如Binance、OKX等,其次完成KYC身份認證,隨後通過法幣充值或OTC交易買入穩定幣,也可將穩定幣劃轉至資金賬戶後通過P2P交易賣出並提現至銀行卡或支付寶,操作時需注意選擇受監管平台、確認交易安全及手續費問題。

1USDT等於多少現金? USDT價值換算教程(大陸) 1USDT等於多少現金? USDT價值換算教程(大陸) Jul 10, 2025 pm 08:42 PM

​USDT作為一種與美元掛鉤的穩定數字資產,其價值的換算和變現是許多用戶關心的問題。本文將詳細介紹USDT的價值構成,並提供在中國大陸地區進行價值換算和變現的實用教程。 1 USDT的現金價值約等於實時美元匯率,但通過C2C交易的最終到手價會略有浮動。換算的核心在於通過可靠平台的C2C功能,選擇一個信譽良好、價格合適的商家進行交易。

如何下載比特幣官方App?比特幣App使用指南 如何下載比特幣官方App?比特幣App使用指南 Jul 22, 2025 pm 11:54 PM

比特币没有官方App,用户主要通过第三方交易所或账户App进行交易和管理。1. 币安(Binance)功能全面,适合各类交易者;2. 欧易(OKX)提供交易与Web3账户一体化服务;3. 火币(HTX)在亚洲市场稳定可靠;4. Gate.io以丰富币种著称;5. KuCoin币种多样且社区活跃;6. Bybit以衍生品交易见长。下载时应访问官网、扫描二维码、根据系统完成安装,并设置双重验证等安全措施确保账户安全。

穩定幣USDT如何換成現金_USDT提現教程 穩定幣USDT如何換成現金_USDT提現教程 Jul 15, 2025 pm 11:54 PM

USDT兌換現金需通過支持法幣出金的交易平台操作。 1.準備一個支持法幣出金的交易平台賬戶(如幣安、歐易、火幣等);2.完成KYC實名認證;3.綁定銀行卡或支付寶等收款方式;4.登錄賬戶並確保USDT在資金賬戶或現貨賬戶中;5.進入OTC或法幣區,選擇賣出USDT;6.設置出售金額並匹配買家;7.確認對方付款後點擊“確認放幣”完成交易。提現方式包括OTC法幣交易、銀行卡提現和第三方支付,其中OTC效率較高。注意事項包括務必核實到賬再放幣、避免頻繁大額提現以及遇到異常及時聯繫客服。整個流程關鍵在於選

以太坊,超越比特幣的區塊鏈平台,優勢與創新盤點 以太坊,超越比特幣的區塊鏈平台,優勢與創新盤點 Aug 06, 2025 pm 11:57 PM

以太坊通過其圖靈完備的智能合約、EVM虛擬機和Gas機制,構建了超越比特幣的可編程區塊鏈平台,支持DeFi、NFT等多元應用生態;其核心優勢包括豐富的DApp生態、強大的可編程性、活躍的開發者社區和跨鏈互操作性;當前正通過以太坊2.0升級實現從PoW到PoS的共識轉型,引入信標鏈、驗證者機制和懲罰制度,提升能效、安全性與去中心化程度;未來將依托分片技術實現數據分片與並行處理,大幅提高吞吐量;同時Rollup技術作為Layer 2方案已廣泛應用,Optimistic Rollup和ZK-Rollu

See all articles