Vue組件生命周期深度剖析:從創建到銷毀的八大鉤子實戰指南

在這里插入圖片描述

系列文章目錄

  • Vue核心指令解析:探索MVVM與數據操作之美

文章目錄

  • 系列文章目錄
  • 前言
  • 一、Vue生命周期是什么?
  • 二、鉤子函數講解
    • 1. beforeCreate( 創建前 )
    • 2. created ( 創建后 )
    • 3. beforeMount(掛載前)
    • 4. mounted(掛載后)
    • 5. beforeUpdate(更新前)
    • 6. updated(更新后)
    • 7. beforeDestroy(銷毀前)
    • 8. destroyed(銷毀后)
    • 9. 代碼實現鉤子函數


前言

????本文將詳細介紹Vue組件的生命周期,包括其各個階段的含義和作用,以及每個階段所對應的鉤子函數的使用方法。我們將逐一解析beforeCreated、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed這八大鉤子函數,并通過一個簡單的實際代碼案例展示它們的具體應用。


一、Vue生命周期是什么?

Vue實例有一個完整的 生命周期,也就是說從開始創建、初始化數據、編譯模板、掛載DOM、渲染-更新-渲染、銷毀等一系列過程,我們稱為Vue 實例的生命周期,鉤子 就是在某個階段給你一個做某些處理的機會。

生命周期圖

在這里插入圖片描述

二、鉤子函數講解

1. beforeCreate( 創建前 )

在實例初始化之后,數據觀測(data observer)和事件配置(event/watcher) 之前被調用,此時組件的選項對象還未創建,el 和 data 并未初始化,因此無法訪問methods, data, computed的方法和數據。

2. created ( 創建后 )

實例已經創建完成之后被調用,在這一步,實例已完成以下配置:數據觀測(data observer)、屬性和方法的運算,watch/event事件回調,完成了data 數據的初始化,el沒有。 然而,掛載階段還沒有開始, $el屬性目前不可見。
這是一個常用的生命周期,因為你可以調用methods中的方法,改變data中的數據,并且修改可以通過vue的響應式綁定體現在頁面上,獲取computed中的計算屬性等等,通常我們可以在這里對實例進行
預處理。

3. beforeMount(掛載前)

掛在開始之前被調用,相關的render函數首次被調用(虛擬DOM),實例已完成以下的配置: 編譯模板,把data里面的數據和模板生成html,完成了el和data 初始化,注意此時還沒有掛載html到頁面上。

4. mounted(掛載后)

掛載完成,也就是模板中的HTML 渲染到HTML頁面 中,此時一般可以做一些ajax操作,mounted只會執行一次。

5. beforeUpdate(更新前)

在數據更新之前被調用,發生在虛擬DOM重新渲染和打補丁之前,可以在該鉤子中進一步地更改狀態,不會觸發附加地重渲染過程

6. updated(更新后)

在由于數據更改導致的虛擬DOM重新渲染和打補丁時會調用,調用時,組件DOM已經更新,所以可以執行依賴于DOM的操作。在大多數情況下,應該避免在此期間更改狀態,因為這可能會導致更新無限循環,該鉤子在服務器端渲染期間不被調用

7. beforeDestroy(銷毀前)

在實例銷毀之前調用,實例仍然完全可用

  1. 這一步還可以用this來獲取實例,
  2. 一般在這一步做一些重置的操作,比如清除掉組件中的定時器 和 監聽的dom事件

8. destroyed(銷毀后)

在實例銷毀之后調用,調用后,所有的事件監聽器會被移出,所有的子實例也會被銷毀,該鉤子在服務器端渲染期間不被調用。

9. 代碼實現鉤子函數

<template><div><h1>生命周期、鉤子函數</h1><h1>{{num}}</h1><button @click="btn">增加</button>
<!--      <button @click="btn">減少</button>  0--><button @click="num+=1">增加</button></div>
</template><script>
export default {name: "test",data(){return{num:0}},methods:{btn(){if(this.num < 15){this.num += 1}else {alert('不能再加了')this.num += 0}}},beforeCreate() {alert('創建之前')},created() {alert('創建之后')},beforeMount() {alert('掛載之前')},mounted() {alert('掛載之后')this.num = 10},beforeUpdate() {alert('修改之前')},updated() {alert('修改之后')}}
</script><style scoped></style>

在這里插入圖片描述

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

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

相關文章

Redis-數據類型-Geospatial(地理空間索引)

文章目錄 1、查看redis是否啟動2、通過客戶端連接redis3、切換到db5數據庫4、將地理位置信息&#xff08;經度和緯度&#xff09;添加到 Redis 的鍵&#xff08;key&#xff09;中4.1、添加大江商廈4.2、添加西部硅谷 5、升序返回有序集key&#xff0c;讓分數一起和值返回的結果…

簡約的服務器監控工具Ward

什么是 Ward &#xff1f; Ward 是一個簡單簡約的服務器監控工具。 Ward 支持自適應設計系統。此外&#xff0c;它還支持深色主題。它僅顯示主要信息&#xff0c;如果您想查看漂亮的儀表板而不是查看一堆數字和圖表&#xff0c;則可以使用它。 Ward 在所有流行的操作系統上都能…

nuxt框架常見配置選項(二)

nuxt.config.js 常見配置 module.exports {head: { title: Nuxt App, meta: [ { charset: utf-8 }, { name: viewport, content: widthdevice-width, initial-scale1 }, // 其他 meta 配置... ], link: [ { rel: icon, type: image/x-icon, href: /favicon.ico } //…

Redis緩存機制詳解(數據淘汰策略、緩存擊穿、緩存穿透、緩存雪崩)

Redis緩存機制詳解 Redis 作為一個高效的內存數據庫&#xff0c;常用于緩存系統。 其緩存機制有助于提高數據訪問速度、減輕后端數據庫壓力。 由于 Redis 是基于內存的數據庫&#xff0c;內存資源有限&#xff0c;因此需要有合理的數據淘汰策略以管理內存使用。 1. 內存數據淘…

解決chrome瀏覽器總是將對站點的http訪問改為https的問題

問題&#xff1a;vue項目本地運行出來的地址是http開頭的&#xff0c;但在chrome瀏覽器中無法訪問&#xff0c;在Edge瀏覽器就可以&#xff0c;發現是chrome總是自動將http協議升級為https。 已試過的有效的方法&#xff1a; 一、無痕模式下訪問 無痕模式下訪問不會將http自…

Tkinter PyQt或PySide、Kivy 的區別

選擇Python GUI框架時&#xff0c;最好的選擇取決于你的具體需求、項目類型以及你對外觀和用戶體驗的期望。這里是一些常用的Python GUI框架&#xff0c;以及它們的優勢和劣勢&#xff1a; 1. Tkinter 優勢&#xff1a; 內置于Python標準庫中&#xff0c;無需安裝額外的包即可…

java基于ssm+jsp 超市進銷存管理系統

1前臺首頁功能模塊 宜佰豐超市進銷存管理系統&#xff0c;在系統首頁可以查看首頁、商品信息、新聞資訊、留言反饋、我的、跳轉到后臺、購物車等內容&#xff0c;如圖1所示。 圖1前臺首頁功能界面圖 用戶注冊&#xff0c;在用戶注冊頁面可以填寫用戶名、密碼、姓名、聯系電話、…

代碼隨想錄——跳躍游戲(Leecode55)

題目鏈接 貪心 class Solution {public boolean canJump(int[] nums) {int cover 0;if(nums.length 1){return true;}// 只有一個元素可以達到for(int i 0; i < cover; i){// 在cover內選擇跳躍步數cover Math.max(i nums[i],cover);if(cover > nums.length - 1)…

數據庫開發規范

一、引言 數據庫開發規范是確保數據庫系統穩定性、安全性、可維護性和性能的重要指導原則。本規范旨在明確數據庫開發過程中的各項標準&#xff0c;包括命名規范、設計規范、編碼規范、安全規范以及性能優化等方面&#xff0c;以指導開發人員和數據庫管理員進行高效的數據庫開…

出現 defineProps is a compiler macro and no longer needs to be imported. 解決方法

目錄 1. 問題所示2. 原理分析3. 解決方法1. 問題所示 執行前端代碼的時候,出現如下問題: [@vue/compiler-sfc] defineProps is a compiler macro and no longer needs to be imported.[@vue/compiler-sfc] defineEmits is a compiler macro and no longer needs to be impo…

【排序 隊列】1585. 檢查字符串是否可以通過排序子字符串得到另一個字符串

本文涉及知識點 排序 隊列 LeetCode1585. 檢查字符串是否可以通過排序子字符串得到另一個字符串 給你兩個字符串 s 和 t &#xff0c;請你通過若干次以下操作將字符串 s 轉化成字符串 t &#xff1a; 選擇 s 中一個 非空 子字符串并將它包含的字符就地 升序 排序。 比方說&a…

Makefile中strip函數的用法

在Makefile中&#xff0c;strip 函數的作用是去除變量值兩端的空白字符&#xff08;空格和制表符&#xff09;。它的基本語法如下&#xff1a; stripped : $(strip variable)其中&#xff0c;variable 是要去除空白字符的變量名或表達式。strip 函數通常用于確保變量的值不包含…

Scikit-learn中的Fit方法:機器學習模型的靈魂

Scikit-learn中的Fit方法&#xff1a;機器學習模型的靈魂 在機器學習的世界里&#xff0c;Scikit-learn&#xff08;簡稱sklearn&#xff09;是一個廣受歡迎的Python庫&#xff0c;以其簡潔、高效而著稱。而在這個庫中&#xff0c;fit方法扮演了一個至關重要的角色。本文將深入…

LLM大語言模型-AI大模型全面介紹

簡介&#xff1a; 大語言模型&#xff08;LLM&#xff09;是深度學習的產物&#xff0c;包含數十億至數萬億參數&#xff0c;通過大規模數據訓練&#xff0c;能處理多種自然語言任務。LLM基于Transformer架構&#xff0c;利用多頭注意力機制處理長距離依賴&#xff0c;經過預訓…

政策護航新能源:政策紅利激發行業活力,助推綠色經濟騰飛

隨著全球氣候變化問題日益嚴重&#xff0c;新能源行業的發展成為推動綠色經濟騰飛的重要引擎。近年來&#xff0c;各國政府紛紛出臺政策支持新能源產業&#xff0c;旨在激發行業活力&#xff0c;促進經濟可持續發展。本文將從政策紅利的角度&#xff0c;探討新能源行業發展的現…

什么是CMSIS || 標準庫與HAL庫

一&#xff0c;ARM&#xff08;Cortex Microcontroller Software Interface Standard&#xff09; ARM Cortex? 微控制器軟件接口標準&#xff08;Cortex Microcontroller Software Interface Standard&#xff09;是 CortexM 處理器系列的與供應商無關的硬件抽象層。…

docker的安裝配置及使用

一.Docker的由來 Docker 最初是 dotCloud 公司創始人Solomon Hykes 在法國期間發起的一個公司內部項目。 2010年的專門做PAAS平臺&#xff0c;但是到了2013年的時候&#xff0c;像亞馬遜&#xff0c;微軟&#xff0c;Google都開始做PAAS平臺。 到了2013年&#xff0c;公司資金鏈…

空調器的銅管

1)、 全新開發的空調器&#xff0c;在鈑金、塑料件結構方案設計的同時&#xff0c;進行配管結構設計,充分考慮整體空間的合理分配&#xff0c;以避免配管設計在其它結構方案確定之后&#xff0c;只局限在有限的空間內進行。 2)、 制冷系統以外的結構件已定型的產品&#xff0c…

仿真模擬--靜態浮動路由

目錄 靜態路由 浮動路由 靜態路由 浮動路由

Verilog描述一個帶有異步置位和異步清零的D觸發器

1 帶有異步置位和異步清零的D觸發器的真值表&#xff1a; 2 Verilog代碼描述 module DFF_SR(CLK, D, Rd, Sd, Q, QN);input CLK, D, Rd, Sd;output Q, QN;reg Q_DFF;always (posedge CLKor negedge Rd or negedge Sd)beginif(!Rd)Q_DFF < 1b0;else if(!Sd)Q_DFF < 1b1;e…