1.7vue生命周期

生命周期階段與鉤子函數

  1. 創建階段

    • beforeCreate():實例初始化之后,數據觀測和事件配置之前調用。此時無法訪問到datamethods等屬性。
    • created():實例創建完成后調用。完成了數據觀測,屬性和方法的運算,watch/event事件回調。但是尚未掛載到DOM。
  2. 掛載階段

    • beforeMount():模板編譯完成,即將掛載到DOM前調用。此時頁面呈現的是未經Vue編譯的DOM結構。
    • mounted():組件掛載到DOM后調用。可以操作真實DOM。
  3. 更新階段

    • beforeUpdate():數據更新時,虛擬DOM重新渲染前調用。可以在這里進行狀態記錄或取消更新。
    • updated():由于數據更改導致的虛擬DOM重新渲染和打補丁,在這之后會調用。此時可以對更新后的DOM進行操作。
  4. 銷毀階段

    • beforeDestroy():實例銷毀之前調用。在這一步,實例仍然完全可用。通常用來清理定時器、解除綁定等。
    • destroyed():實例銷毀后調用。調用后,所有的事件監聽器和所有子實例都會被移除。

鉤子函數的應用場景

  • created中發送異步請求獲取數據。
  • mounted中操作DOM元素或者初始化第三方庫。
  • beforeUpdate中可以獲取當前的狀態并在必要時進行修改,但要小心避免造成無限循環更新。
  • beforeDestroy中釋放資源,比如清除定時器或者解綁事件監聽器。

Vue.nextTick

Vue.nextTick() 是一個非常重要的工具,用于在下次 DOM 更新循環結束之后執行回調函數。當你修改了數據,但需要在 DOM 實際更新后進行某些操作時,就需要使用 nextTick

?典型使用場景示例:獲取更新后的 DOM 元素尺寸

假設你有一個按鈕,點擊后切換一個 div 的顯示狀態(v-show),并希望在 div 顯示出來后立即獲取它的高度。

?錯誤做法(不使用 nextTick)
<template><div><button @click="showDiv">顯示 div 并獲取高度</button><div v-show="isVisible" ref="myDiv" style="background: lightblue;">這是一個動態顯示的 div,內容可能很多...</div></div>
</template><script>
export default {data() {return {isVisible: false}},methods: {showDiv() {this.isVisible = true; // 數據更新,觸發 DOM 更新// ? 錯誤:此時 DOM 還沒有更新!const divHeight = this.$refs.myDiv.offsetHeight;console.log('高度:', divHeight); // 可能輸出 0 或舊值}}
}
</script>

在這個例子中,this.isVisible = true 觸發了 DOM 更新,但 Vue 的更新是異步批量處理的。當你立即訪問 this.$refs.myDiv.offsetHeight 時,DOM 還沒有完成渲染,因此你可能獲取不到正確的高度。


?正確做法(使用 nextTick)
<template><div><button @click="showDiv">顯示 div 并獲取高度</button><div v-show="isVisible" ref="myDiv" style="background: lightblue;">這是一個動態顯示的 div,內容可能很多...</div></div>
</template><script>
export default {data() {return {isVisible: false}},methods: {showDiv() {this.isVisible = true; // 數據更新// ? 正確:在 DOM 更新完成后執行this.$nextTick(() => {const divHeight = this.$refs.myDiv.offsetHeight;console.log('真實高度:', divHeight); // 輸出正確的高度// 你可以在這里進行基于 DOM 尺寸的后續操作});}}
}
</script>

?為什么需要?nextTick

  • Vue 在檢測到數據變化后,不會立即更新 DOM,而是開啟一個隊列,異步地批量更新。
  • 這樣可以避免在同一個事件循環中多次狀態變更導致的重復渲染,提高性能。
  • nextTick?回調會在 Vue 刷新 DOM 后執行,確保你能訪問到最新的 DOM 狀態。

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

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

相關文章

第十八天(指紋識別WAF判斷蜜罐排除)

Web架構 開源CMS&#xff1a; Discuz、WordPress、PageAdmin、蟬知等 前端技術&#xff1a; HTML5、Jquery、Bootstrap、Vue、NodeJS等 開發語言&#xff1a; PHP、JAVA、Ruby、Python、C#、JS、Go等 框架組件&#xff1a; SpringMVC、Thinkphp、Yii、Tornado、Vue等 Web服…

Real-Time Rendering 4th Edition 完整學習路徑

課程計劃&#xff1a;Real-Time Rendering 4th Edition 完整學習路徑 &#x1f4da;? 階段一&#xff1a;數學基礎鞏固 (2-3周) &#x1f9ee;向量與矩陣運算 3D變換矩陣的本質理解齊次坐標系統的實際意義幾何數學 點、線、面的幾何關系法向量與切向量計算三角函數在圖形學中的…

MC0364魔法鏈路

碼蹄集OJ-魔法鏈路 MC0364?魔法鏈路 難度&#xff1a;黃金 時間限制&#xff1a;1 秒 占用內存&#xff1a;256 M 收藏 報錯 小碼妹學會了多重施法&#xff0c;也就是同時施放多個法術的能力&#xff0c;然而多重施法中每個最終施放的法術都需要一些前置的法力運轉&#xff…

《解密React key:虛擬DOM Diff中的節點身份錨點》

在React的性能優化體系中&#xff0c;key屬性始終是一個看似簡單卻暗藏玄機的存在。它并非可有可無的標記&#xff0c;而是虛擬DOM Diff算法識別節點身份的核心錨點&#xff0c;直接決定著React如何判斷節點是否需要重渲染、如何復用已有元素。理解key的本質&#xff0c;不僅能…

react 和 react native 的開發過程區別

React 和 React Native 雖然都使用 React 思想和語法&#xff08;函數組件、Hooks、JSX 等&#xff09;&#xff0c;但在 開發流程、渲染機制、UI 組件、樣式處理、運行平臺 等方面有明顯差異。以下是對比總結&#xff1a;? 一、開發目的和平臺不同對比項ReactReact Native應用…

什么是股指期貨的不對沖策略?

不對沖策略的核心思想是把股指期貨當作ETF基金來用。ETF基金是一種跟蹤指數的基金&#xff0c;比如滬深300ETF&#xff0c;它會按照滬深300指數的成分股比例來配置資產。而股指期貨則是直接跟蹤滬深300指數的期貨合約。假設現在滬深300指數是4000點&#xff0c;你有120萬資金。…

C++ vector底層實現與迭代器失效問題

目錄 前言 一、vector 的框架 二、基礎實現 1、無參的構造&#xff1a; 2、析構函數 3、size 4、capacity 5、reserve擴容 6、push_back 7、迭代器 8、 operator[ ] 9、pop_back 10、insert 以及 迭代器失效問題 11、erase 以及 迭代器失效問題 12、resize 13、 拷貝…

HTML 表單詳解:構建用戶交互的完整指南

在上一篇文章中&#xff0c;我們學習了HTML的基礎標簽和頁面結構。今天我們將深入探討HTML中最重要的交互元素——表單。表單是網頁與用戶交互的核心組件&#xff0c;從簡單的登錄頁面到復雜的數據收集系統&#xff0c;都離不開表單的支持。表單基礎概念表單&#xff08;Form&a…

云原生周刊:2025年的服務網格

開源項目推薦 kaito kaito 是由微軟開源并托管于 GitHub 的項目&#xff0c;旨在自動化在 K8s&#xff08;主目前支持 Azure AKS&#xff09;中部署與管理大型語言模型&#xff08;如 Falcon、Phi?3、Llama&#xff09;推理及微調工作負載。它通過定義 CRD&#xff08;Works…

國產開源大模型崛起:使用Kimi K2/Qwen2/GLM-4.5搭建編程助手

近期&#xff0c;國產大模型領域的發展令人矚目&#xff0c;多款高性能開源模型的涌現&#xff0c;為我們開發者帶來了前所未有的機遇。這些模型不僅在各大基準測試中名列前茅&#xff0c;其強大的代碼能力也為我們打造個性化的編程助手提供了堅實的基礎。HuggingFace的開源大模…

淺析責任鏈模式在視頻審核場景中的應用

本文字數&#xff1a;3161字預計閱讀時間&#xff1a;20分鐘01設計模式設計模式的概念出自《Design Patterns - Elements of Reusable Object-Oriented Software》中文名是《設計模式 - 可復用的面向對象軟件元素》&#xff0c;該書是在1994 年由 Erich Gamma、Richard Helm、R…

洛谷 P3372 【模板】線段樹 1-普及+/提高

題目描述 如題&#xff0c;已知一個數列 {ai}\{a_i\}{ai?}&#xff0c;你需要進行下面兩種操作&#xff1a; 將某區間每一個數加上 kkk。求出某區間每一個數的和。 輸入格式 第一行包含兩個整數 n,mn, mn,m&#xff0c;分別表示該數列數字的個數和操作的總個數。 第二行包含 n…

flink寫paimon表的過程解析

背景 apache paimon是構建湖倉一體的重要組成部分&#xff0c;由于paimon的寫入速度很快&#xff0c;通過flink進行數據寫入是很自然的選擇&#xff0c;本文就介紹下使用flink寫入paimon的兩階段協議的大概邏輯 技術實現 flink通過兩階段協議寫入paimon表&#xff0c;分成三個步…

迅為RK3568開發板OpeHarmony學習開發手冊-點亮 HDMI 屏幕

OpenHarmony 源碼中默認支持 HDMI 屏幕&#xff0c;但是默認的分辨率是采用 mipi 的分辨率&#xff0c;我們修改代碼&#xff0c;關閉 MIPI 就可以正常顯示了。在之前視頻修改的基礎上&#xff0c;修改/home/topeet/OH4.1/OpenHarmony-v4.1-Release/OpenHarmony/out/kernel/src…

北京理工大學醫工交叉教學實踐分享(1)|如何以實踐破解數據挖掘教學痛點

如何有效提升醫工交叉領域數據挖掘課程的教學效果&#xff1f;近日&#xff0c;北京理工大學醫學技術學院辛怡副教授在和鯨組織的分享會上&#xff0c;系統介紹了其團隊在《數據挖掘在生物醫學中的應用》課程中的創新實踐&#xff0c;為解決普遍教學痛點提供了可借鑒的“平臺化…

Vue 3 入門教程 8 - 路由管理 Vue Router

一、Vue Router 簡介Vue Router 是 Vue.js 官方的路由管理器&#xff0c;它與 Vue.js 核心深度集成&#xff0c;用于構建單頁面應用&#xff08;SPA&#xff09;。單頁面應用是指整個應用只有一個 HTML 頁面&#xff0c;通過動態切換頁面內容來模擬多頁面跳轉的效果&#xff0c…

django的數據庫原生操作sql

from django.db import connection from django.db import transaction from django.db.utils import (IntegrityError,OperationalError,ProgrammingError,DataError ) from django.utils import timezoneclass Db(object):"""數據庫操作工具類&#xff0c;封裝…

FreeRTOS---基礎知識2

1. FreeRTOS 調度機制概述FreeRTOS 是一個實時操作系統&#xff08;RTOS&#xff09;&#xff0c;其核心功能是通過 調度器&#xff08;Scheduler&#xff09; 管理多個任務的執行。調度機制決定了 何時切換任務 以及 如何選擇下一個運行的任務&#xff0c;以滿足實時性、優先級…

Docker安裝(精簡述版)

1. 安裝&#xff1a;Docker 環境&#xff08;Docker desktop&#xff09; #Windows架構版本查看&#xff0c;Win R? 輸入 ?cmd? 打開命令提示符&#xff1b;輸入命令?&#xff1a; bash echo %PROCESSOR_ARCHITECTURE%#安裝Docker desktop&#xff08;安裝時勾選 WSL2&am…

Postman-win64-7.3.5-Setup.exe安裝教程(附詳細步驟+桌面快捷方式設置)?

Postman 是一款超常用的接口調試工具&#xff0c;程序員和測試人員用它來發送網絡請求、測試API接口、調試數據交互? 1. 雙擊安裝包? 安裝包下載地址&#xff1a;https://pan.quark.cn/s/4b2960d60ae9&#xff0c;找到你下的 Postman-win64-7.3.5-Setup.exe 文件&#xff08…