深入理解小程序組件的生命周期

一、小程序組件的生命周期概述

小程序組件作為頁面中的一種內部元素,具有自身的生命周期。組件的生命周期由組件實例上的函數鉤子控制,這些鉤子提供給開發者在組件不同的生命周期中添加自定義邏輯的機會。

小程序組件可以理解為“自定義標籤”,由組件的WXML、樣式WXSS和邏輯JS三個文件組成。組件是由組件構造器構造出來的實例。組件構造器是使用Component()函數創建的。

小程序組件的生命周期包括創建、掛載、更新和卸載等階段。在不同階段,組件會觸發不同的函數鉤子,開發者可以在這些鉤子中編寫自己的代碼,以達到想要的效果。

二、小程序組件的生命周期函數

1.創建階段

小程序組件的創建階段包括組件實例的創建和屬性的初始化。組件的創建階段包含以下生命周期函數:

1.1. created() 組件實例剛剛被創建時觸發,此時組件數據綁定等不能使用,在這個周期內,我們可以給組件添加一些屬性、數據等。

Component({
  created() {
    // 組件實例創建完成後
    this.setData({
      message: 'Hello World'
    })
  }
})

1.2. attached() 組件實例進入頁面節點樹時觸發,即將插入頁面時。此時可以獲取父組件實例對象、節點信息等。

Component({
  attached() {
    console.log('component attached ')
  }
})

1.3. ready() 組件視圖層已經構建完畢,可以獲取節點信息和寬高信息等。在這個階段,可以開發一些使用組件去獲取父頁面里的節點等操作。

Component({
  ready() {
    console.log('component ready')
  }
})

2.更新階段

小程序組件的更新階段主要是藉助屬性和數據的變化來觸發的,觸發更新會引發生命周期函數執行,此時可以調用組件的一個或多個的屬性或方法進行更新,從而使得組件重新渲染。

2.1. moved() 組件節點從原位置移動到新的位置時觸發。此時可以獲取到移動的方向和移動的位置等信息。

Component({
  moved() {
    console.log('component moved')
  }
})

2.2. detached() 組件從頁面節點樹中被移除時觸發。在此階段,可以完成一些清理工作。

Component({
  detached() {
    console.log('component detached')
  }
})

三、小程序組件生命周期實例演示

下面是一個簡單的小程序組件生命周期實例,以一個目錄列表組件為例,演示組件生命周期函數的使用方法。

目錄列表組件示例

根據需要添加wxml、js、wxss文件即可。

<!-- 目錄列表組件.wxml -->
<view class="directory-list">
  <view class="directory-list__item" wx:for="{{list}}" wx:key="index" bindtap="handleTap">
    {{item.name}}
  </view>
</view>

<!-- 目錄列表組件.wxss -->
.directory-list {
  background-color: #fff;
}

.directory-list__item {
  padding: 16px;
  border-bottom: 1px solid #eee;
}
.directory-list__item:last-child {
  border-bottom: none;
}

<!-- 目錄列表組件.js -->
Component({
  /**
   * 組件的屬性列表
   */
  properties: {
    // 接收傳遞的list數據
    list: {
      type: Array,
      value: []
    }
  },

  /**
   * 組件的初始數據
   */
  data: {
    message: ''
  },

  /**
   * 組件的方法列表
   */
  methods: {
    handleTap(e) {
      this.triggerEvent('onTap', e.currentTarget.dataset.index)
    },

    /**
     * 組件實例剛剛被創建時觸發
     */
    created() {
      console.log('component created')
    },

    /**
     * 組件實例進入頁面節點樹時觸發,即將插入頁面時
     */
    attached() {
      console.log('component attached')
    },

    /**
     * 組件視圖層已經構建完畢,可以獲取節點信息和寬高信息等
     */
    ready() {
      console.log('component ready')
    },

    /**
     * 組件實例從頁面中移除時觸發
     */
    detached() {
      console.log('component detached')
    }
  }
})

使用目錄列表組件

在頁面中引用目錄列表組件,並給組件傳遞數據。在組件的生命周期函數中添加自定義代碼。

<!-- canvas.wxml -->
<navigator class="page-navigation" url="../index/index"></navigator>

<view class="canvas">
  <!-- 引用目錄列表組件 -->
  <directory-list 
    class="directory-list" 
    list="{{catalogList}}" 
    onTap="handleTap"
  />
  <canvas class="canvas-chart" type="2d" id="myCanvas" canvas-id="myCanvas" bindtouchstart="bindingtap" />
</view>

<!-- canvas.wxss -->
.canvas-chart {
  height: 240px;
  width: 100%;
  background-color: #f5f5f5;
}

.directory-list {
  margin-top: 10px;
}

<!-- canvas.js -->
const app = getApp()

Page({
  data: {
    canvasWidth: 0,
    canvasHeight: 0,
    catalogList: [
      { id: '1', name: '繪製矩形' },
      { id: '2', name: '繪製圓形' },
      { id: '3', name: '繪製文本' }
    ]
  },

  onLoad() {
    this.setCanvasSize()
  },

  handleTap: function (event) {
    // 預留回調事件 - 點擊事件
  },

  bindingtap() {
    // 預留回調事件 - 滑動事件
  },

  setCanvasSize: function () {
    const that = this
    wx.getSystemInfo({
      success: function (res) {
        that.setData({
          canvasWidth: res.windowWidth,
          canvasHeight: res.windowHeight - 80
        })
      },
    })
  }
})

結語

小程序組件的生命周期在小程序開發中佔據了很重要的地位,非常值得開發者去了解、掌握。熟練掌握小程序組件的生命周期,可以幫助我們更好地構建組件化、易維護的小程序應用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/306237.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 12:00
下一篇 2025-01-02 12:00

相關推薦

  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟件。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨着深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟件開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • 改善Python程序的90個建議pdf網盤

    本文將從多個方面對改善Python程序的90個建議pdf網盤進行詳細闡述,幫助Python開發者提高程序的性能和效率。 一、代碼優化 1、使用map函數或列表推導式代替for循環。…

    編程 2025-04-29

發表回復

登錄後才能評論