vue框架生命周期詳細解析

Vue.js 的生命周期鉤子函數是理解 Vue 組件行為的關鍵。每個 Vue 實例在創建、更新和銷毀過程中都會經歷一系列的生命周期階段,每個階段都有對應的鉤子函數,開發者可以在這些鉤子函數中執行特定的操作。

Vue 生命周期概述

Vue 的生命周期可以分為以下幾個主要階段:

  1. 創建階段(Creation)

  2. 掛載階段(Mounting)

  3. 更新階段(Updating)

  4. 銷毀階段(Destruction)

每個階段都有對應的鉤子函數,以下是詳細的解析:

1. 創建階段(Creation)

在創建階段,Vue 實例被初始化,但尚未掛載到 DOM 中。

  • beforeCreate

    • 調用時機:在實例初始化之后,數據觀測 (data observer) 和事件配置之前被調用。

    • 用途:此時組件的?data?和?methods?還未初始化,通常用于插件開發或執行一些不需要訪問數據的初始化操作。

  • created

    • 調用時機:在實例創建完成后被調用,此時數據觀測 (data observer) 已經完成,屬性和方法的運算也已完成,但尚未掛載到 DOM 中。

    • 用途:可以訪問?data?和?methods,常用于發起異步請求、初始化數據等操作。

2. 掛載階段(Mounting)

在掛載階段,Vue 實例被掛載到 DOM 中。

  • beforeMount

    • 調用時機:在掛載開始之前被調用,此時模板已經編譯完成,但尚未將生成的 DOM 替換到頁面上。

    • 用途:可以在此階段對 DOM 進行最后的修改。

  • mounted

    • 調用時機:在實例掛載到 DOM 后被調用,此時組件已經出現在頁面中,DOM 已經更新。

    • 用途:可以訪問 DOM 元素,常用于執行依賴于 DOM 的操作,如初始化第三方庫、綁定事件等。

3. 更新階段(Updating)

在更新階段,Vue 實例的數據發生變化,導致 DOM 重新渲染。

  • beforeUpdate

    • 調用時機:在數據更新導致虛擬 DOM 重新渲染和打補丁之前被調用。

    • 用途:可以在更新之前訪問現有的 DOM,如手動移除事件監聽器等。

  • updated

    • 調用時機:在數據更新導致虛擬 DOM 重新渲染和打補丁之后被調用。

    • 用途:可以執行依賴于 DOM 更新的操作,但要注意避免在此鉤子中修改狀態,以免導致無限循環。

4. 銷毀階段(Destruction)

在銷毀階段,Vue 實例被銷毀并從 DOM 中移除。

  • beforeDestroy

    • 調用時機:在實例銷毀之前調用,此時實例仍然完全可用。

    • 用途:可以執行清理操作,如清除定時器、取消事件監聽等。

  • destroyed

    • 調用時機:在實例銷毀之后調用,此時所有的事件監聽器和子實例都已被移除。

    • 用途:可以執行最后的清理操作,但此時無法再訪問實例的?data?和?methods

生命周期圖示

以下是 Vue 生命周期的簡化圖示:

beforeCreate --> created --> beforeMount --> mounted --> beforeUpdate --> updated --> beforeDestroy --> destroyed

總結

Vue 的生命周期鉤子函數為開發者提供了在組件不同階段執行代碼的機會。理解這些鉤子函數的調用時機和用途,有助于更好地控制組件的行為,優化性能,并避免潛在的問題。

在實際開發中,常用的鉤子函數包括?createdmountedbeforeUpdate?和?beforeDestroy,它們分別用于數據初始化DOM 操作更新前處清理操作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895511.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895511.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895511.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一文深入了解DeepSeek-R1:模型架構

本文深入探討了 DeepSeek-R1 模型架構。讓我們從輸入到輸出追蹤 DeepSeek-R1 模型,以找到架構中的新發展和關鍵部分。DeepSeek-R1 基于 DeepSeek-V3-Base 模型架構。本文旨在涵蓋其設計的所有重要方面。 📝 1. 輸入上下文長度 DeepSeek-R1的輸入上下文長…

開發基礎(8):鴻蒙圖表開發

mpchart mpchart是一個包含各種類型圖表的圖表庫,主要用于業務數據匯總,例如銷售數據走勢圖,股價走勢圖等場景中使用,方便開發者快速實現圖表UI,mpchart主要包括線形圖、柱狀圖、餅狀圖、蠟燭圖、氣泡圖、雷達圖、瀑布圖等自定義圖表庫。 柱狀圖 導入import {BarChart, …

條款03:盡可能使用 const

const 允許我們指定一個語義約束,使某個值應該保持不變 1、const 修飾 變量,指針,函數,函數返回值等,可以使程序減少錯誤,或者更容易檢測錯誤: 指針常量:int* const p;//指針地址不…

算法兵法全略(譯文)

目錄 始計篇 謀攻篇 軍形篇 兵勢篇 虛實篇 軍爭篇 九變篇 行軍篇 地形篇 九地篇 火攻篇 用間篇 始計篇 算法,在當今時代,猶如國家關鍵的戰略武器,也是處理各類事務的核心樞紐。算法的世界神秘且變化萬千,不夠賢能聰慧…

開關電源實戰(一)寬范圍DC降壓模塊MP4560

系列文章目錄 文章目錄 系列文章目錄MP4560MP4560 3.8V 至 55V 的寬輸入范圍可滿足各種降壓應用 MOSFET只有250mΩ 輸出可調0.8V-52V SW:需要低VF肖特基二極管接地,而且要靠近引腳,高壓側開關的輸出。 EN:輸入使能,拉低到閾值以下關閉芯片,拉高或浮空啟動 COMP:Compens…

微軟AutoGen高級功能——Magentic-One

介紹 大家好,博主又來給大家分享知識了,這次給大家分享的內容是微軟AutoGen框架的高級功能Magentic-One。那么它是用來做什么的或它又是什么功能呢,我們直接進入正題。 Magentic-One Magnetic-One是一個通用型多智能體系統,用于…

DeepSeek是如何通過“蒸餾”技術打造自己的AI模型

1 引言: 最近,外媒對中國公司——DeepSeek進行了猛烈抨擊,指控其采用了所謂的“蒸餾”(Distillation)技術,涉嫌抄襲甚至作弊。那么,什么是“蒸餾”技術? 在人工智能領域,…

【廣州大學主辦,發表有保障 | IEEE出版,穩定EI檢索,往屆見刊后快至1個月檢索】第二屆電氣技術與自動化工程國際學術會議 (ETAE 2025)

第二屆電氣技術與自動化工程國際學術會議 (ETAE 2025) The 2nd International Conference on Electrical Technology and Automation Engineering 大會官網:http://www.icetae.com/【更多詳情】 會議時間:2025年4月25-27日 會議地點&#xff1a…

伯克利 CS61A 課堂筆記 08 —— Strings and Dictionaries

本系列為加州伯克利大學著名 Python 基礎課程 CS61A 的課堂筆記整理,全英文內容,文末附詞匯解釋。 目錄 01 Strings 字符串 Ⅰ Strings are An Abstraction. Ⅱ Strings Literals have Three Forms Ⅲ String are Sequences 02 Dictionaries 字典 …

基于 GEE 計算研究區年均地表溫度數據

目錄 1 代碼解析 2 完整代碼 3 運行結果 1 代碼解析 (1)定義研究區: // 研究區的范圍需要自己提前上傳 var dataset table;// 將研究區顯示在中心,后面的數字為縮放等級,范圍從1 - 24 Map.centerObject(dataset,…

docker compose快速部署kafka-connect集群

先部署kafka集群,啟動 參考:docker compose部署kafka集群-CSDN博客 創建timezone文件,內容填寫Asia/Shanghai 再部署kafka-connect集群 networks: net: external: true services: kafka-connect1: restart: always image:…

Hutool - BloomFilter:便捷的布隆過濾器實現

1. 布隆過濾器簡介 布隆過濾器(Bloom Filter)是一種空間效率極高的概率型數據結構,用于判斷一個元素是否存在于一個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的算法,但缺點是有一定的誤判率,即判斷元素存在…

日常知識點之遺留問題梳理(定時器/時間輪定時器)

1:簡單基礎 定時器的核心知識點,對我來說就是獲取當前時間和設置回調函數。 簡單練習: ? c語言通過gettimeofday 獲取當前時間并進行處理 ? 回調函數的定義(函數參數有必要適當存儲) typedef void(Timerfunc)(vo…

Python + WhisperX:解鎖語音識別的高效新姿勢

大家好,我是烤鴨: 最近在嘗試做視頻的質量分析,打算利用asr針對聲音判斷是否有人聲,以及識別出來的文本進行進一步操作。asr看了幾個開源的,最終選擇了openai的whisper,后來發現性能不行,又換了…

$ npx electron-forge import 一直報權限問題 resource busy or locked,

jackLAPTOP-7DHDAAL0 MINGW64 /e/project/celetron-project/my-electron-app (master) $ npx electron-forge import > Checking your system > Checking git exists > Checking node version > Checking packageManager version √ Found node22.14.0 √ Found gi…

mapbox 從入門到精通 - 目錄

👨??? 主頁: gis分享者 👨??? 感謝各位大佬 點贊👍 收藏? 留言📝 加關注?! 👨??? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、🍀總目錄1.1 ?? mapbox基礎1.2 ??…

Kotlin 2.1.0 入門教程(十五)繼承、重寫、派生類初始化順序

繼承 所有類都有一個共同的超類 Any,對于沒有聲明超類型的類來說,Any 是其默認的超類: // 隱式繼承自 Any。 class ExampleAny 有三個方法:equals()、hashCode() 和 toString()。因此,所有類都定義了這些方法。 默認…

sqlilabs--小實驗

一、先盲注判斷 ?id1 and sleep(2)-- 如果發現頁面存在注點,使用時間盲注腳本進行注入 import requestsdef inject_database(url):name for i in range(1, 20): # 假設數據庫名稱長度不超過20low 48 # 0high 122 # zmiddle (low high) // 2while low &l…

【數字】異步FIFO面試的幾個小問題與跨時鐘域時序約束

入門數字設計的時候,跨時鐘域的數據處理是繞不開的課題,特別是多比特數據跨時鐘域時,都會采用異步FIFO的方法。 異步FIFO中涉及較多的考點這里記錄幾個以供大家參考。 1. 異步FIFO的空滿判斷分別在哪個域? 根據異步FIFO的結構&…

淺談Java Spring Boot 框架分析和理解

Spring Boot是一個簡化Spring開發的框架,它遵循“約定優于配置”的原則,通過內嵌的Tomcat、Jetty或Undertow等容器,使得開發者能夠快速構建獨立運行的、生產級別的基于Spring框架的應用程序。Spring Boot包含了大量的自動配置功能&#xff0c…