發現一個好用的Vue.js內置組件

目錄

一、這個好用的內置組件是什么?

二、這個組件的主要功能

三、怎么使用?

四、使用注意事項

五、我的使用場景


一、這個好用的內置組件是什么?

今天在優化我的平臺應用時,發現一個好用的組件標簽--<keep-alive>

<keep-alive> 是 Vue.js 中的一個內置組件,它的主要作用是緩存動態組件實例,避免它們在切換時被銷毀和重新創建。這對于需要保留組件狀態(例如表單輸入、滾動位置等)的應用場景特別有用。通過使用 <keep-alive>,可以顯著提升用戶體驗,因為不需要每次顯示組件時都重新加載或初始化它。

二、這個組件的主要功能

  1. 緩存組件:當包裹在 <keep-alive> 內的組件從激活狀態變為非激活狀態時,該組件實例不會被銷毀,而是會被緩存起來。當下次再次進入這個組件時,會直接從緩存中恢復,保持之前的狀態。

  2. 生命周期鉤子:當使用 <keep-alive> 包裹組件時,這些組件將擁有額外的生命周期鉤子

    • activated: 當組件被激活時調用。這個
    • deactivated: 當組件停用時調用。

三、怎么使用?

使用上很簡單,只需要將組件放到這個<keep-alive></keep-alive>標簽之內就可以了。

<template><div><button @click="currentComponent = 'ComponentA'">顯示組件 A</button><button @click="currentComponent = 'ComponentB'">顯示組件 B</button><!-- 使用 keep-alive 緩存組件 --><keep-alive><component :is="currentComponent"></component></keep-alive></div>
</template>

這里的<component is=""></component>用法也是新發現的,is的屬性值填入組件名稱即可在這里添加這個組件。這里是通過一個變量來控制組件名稱,所以同一時間只會添加一個組件,相當于使用多個<組件1 v-if="current==''"></組件1>

因為使用了<keep-alive>,所以在多個組件輪流切換顯示時,每個組件都不會被銷毀,而是被緩存。

還可以使用它的標簽內屬性進行一些個性控制。如:

  • include:字符串或正則表達式。只有名稱匹配的組件會被緩存。
  • exclude:字符串或正則表達式。任何名稱匹配的組件都不會被緩存。
  • max:數字。最多可以緩存多少個組件實例。
 <keep-alive include="ComponentA,ComponentB"><component :is="currentComponent"></component></keep-alive>

四、使用注意事項

使用<keep-alive>時,需要注意,因為是緩存了組件實例,所以過度使用可能會導致客戶端內存占用增加

<keep-alive>無法與<組件1 v-show="current==''"></組件1>的v-show結合使用,因為它們兩者的工作機制不同

activated這個生命周期鉤子和使用了v-if進行顯示控制的組件里的mounted可點像,不會像使用v-show進行顯示控制的組件在主頁面加載時把所有組件里的mounted一次性全部都加載完,而是會在當前這個組件顯示(加載)時才執行。

也有點不像,不像的地方在于使用了v-if進行顯示控制的組件里的mounted只會在組件第一次顯示(也就是初次創建實例)時執行一次,而activated這個生命周期鉤子會在每次組件顯示(也就是激活)時,執行一次。

五、我的使用場景

我的場景是在主頁面下有三個標簽頁,我使用了三個組件作為三個標簽頁,使用v-if控制顯示/隱藏,然后標簽頁里各有一個scrollview需要計算尺寸。

本來使用v-if是沒問題的,每次切換標簽頁,都是銷毀/新建,計算放在mounted生命周期鉤子里都能正常計算出尺寸。但是標簽頁的數據也要每次清空重來,就換成了使用v-show來控制標簽頁的顯示/隱藏。

這時候,標簽頁的數據是不會清空重來了,但是后面兩個標簽頁的mounted在主頁面加載時,就和第一個標簽頁的mouted一起執行了,導致第一個標簽頁的scrollview尺寸計算沒問題,但是后面兩個的scrollview計算結果都是0。

因為使用v-show,本身標簽頁都是一次性加載到DOM中的,顯示設置了不顯示(display:none),所以會同時調用mounted,同時計算,而且計算結果只有顯示的這個scrollview是正確的尺寸,不顯示的scrollview尺寸就不正確了。

后來使用了<keep-alive>在類似v-if的控制情況(不會同時執行mounted)下,也不會銷毀組件實例,清空數據了

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

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

相關文章

dart學習記錄5(類、對象)

1.獲取運行時對象類型 使用Object 屬性的 runtimeType&#xff0c;它返回一個 Type 對象。 print(a 的類型是 ${a.runtimeType});??警告 在測試對象的類型時建議使用object is Type比測試 object.runtimeType Type 更穩定。 2.實例變量的聲明 class Point {double? x;…

啟明星辰春招面試題

《網安面試指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇網安資料庫https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

Live555+Windows+MSys2 編譯Androidso庫和運行使用

下載 wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz tar -xzvf live555-latest.tar.gz加入版本控制 git init git add . git commit -a -m "first init" git log修改config.android-arm64 cd live vim config.android-arm64 ./genMakefile…

實用工具-Stirling-PDF

windows桌面版參考這個文檔 Getting Started | Stirling-PDF 安裝包推薦使用迅雷下載&#xff0c;先轉存到迅雷網盤在使用迅雷下載速度嘎嘎快。 github:https://github.com/Stirling-Tools/Stirling-PDF Stirling-PDF 是一個強大的、基于 Web 的開源 PDF 處理工具&#xff0c…

借助AI Agent實現數據分析

在當今數據驅動的世界中&#xff0c;數據分析已成為企業決策、科學研究和社會治理的核心工具。然而&#xff0c;隨著數據量的爆炸式增長和復雜性的提升&#xff0c;傳統的數據分析方法面臨著效率低下、成本高昂和人力不足等挑戰。AI技術的快速發展&#xff0c;尤其是AI Agent的…

JavaScript實現一個函數,將數組扁平化(flatten),即把多維數組轉為一維數組。

大白話實現一個函數&#xff0c;將數組扁平化&#xff08;flatten&#xff09;&#xff0c;即把多維數組轉為一維數組。 思路 實現數組扁平化的基本思路是遍歷數組中的每個元素&#xff0c;如果元素是數組&#xff0c;就遞歸地將其扁平化并添加到結果數組中&#xff1b;如果元…

麒麟操作系統安裝人大金倉數據庫

如果你想擁有你從未擁有過的東西&#xff0c;那么你必須去做你從未做過的事情 在當前數字化轉型和信息安全備受重視的背景下&#xff0c;眾多公司積極推進國產化改造進程。在操作系統領域&#xff0c;統信、open 歐拉、中標麒麟、銀河麒麟等國產操作系統嶄露頭角&#xff0c;逐…

開發SAPUI5 Fiori應用并部署到SAP系統

首先新建一個項目文件夾 在VScode中打開 打開SAP Fiori&#xff08;需要先下載安裝&#xff0c;參考上上一篇文章&#xff09; ,選擇已添加的SAP S4 ERP系統 ,點擊創建Firoi應用。 如果沒有添加系統的&#xff0c;點擊添加按鈕&#xff0c;添加即可&#xff0c;注意&#xff…

右鍵添加:新建HTML模板文件

使用注冊表給Windows右鍵添加:新建HTML文檔模板的功能_注冊表右鍵新建-CSDN博客 新建文件有了&#xff0c;但是沒有引用模板文件&#xff0c;是空文件。 默認改成 htmlfile 模板成功

[極客大挑戰 2019]Knife——3.20BUUCTF練習day4(1)

[極客大挑戰 2019]Knife——3.20BUUCTF練習day4(1) 很簡單 蟻劍連接 根目錄下有flag flag{f77e8444-dd87-48b3-8fe0-a735b5a5c708}

力扣22.括號生成

22. 括號生成 - 力扣&#xff08;LeetCode&#xff09; 代碼區&#xff1a; class Solution {vector<string> ans; public:vector<string> generateParenthesis(int n) {dfs(0,0,n,"");return ans;}void dfs(int left,int right,int n,string str){if(l…

第37周:文獻閱讀

目錄 摘要 Abstract 文獻閱讀 問題引入 研究背景 研究意義 研究目的 實驗方法 TimeGAN 數據增強 預測模型的獨立性 創新點 實驗研究 數據準備 合成數據分析 模型比較 總結 摘要 該文獻圍繞利用 TimeGAN 提高供熱變電站熱負荷預測精度展開。結構上&#x…

NFS 安裝與測試

NFS 安裝與測試 服務器 # NFS 共享目錄 mkdir -p ${HOME}/Share/nfs && sudo chown -R nobody:nogroup ${HOME}/Share/nfs# 安裝 NFS Server sudo apt install nfs-kernel-server# 配置 NFS 目錄 sudo cp -arf /etc/exports /etc/exports.bak sudo tee -a /etc/exports…

算法題(103):數獨

審題&#xff1a; 本題需要我們找出數獨的解&#xff0c;并打印出來 時間復雜度分析&#xff1a; 本題是9*9的數獨格子&#xff0c;所以數據量小于25&#xff0c;可以使用2^n的算法 思路&#xff1a; 方法一&#xff1a;深度優先搜索 首先確定搜索及插入策略&#xff1a; 我們采…

snmp/mib采用子代理模式,編碼,部署

0.環境 0.1 編譯net-snmp cd net-snmp-5.7.2 ./configure --prefix/usr/local/snmp BEGIN failed--compilation aborted at Makefile.PL line 1. make: *** [perlmakefiles] Error 2 yum install cpan -y make && make install /…

# [RPA] 使用八爪魚進行高效網頁數據采集

在許多行業中&#xff0c;數據是核心資產。然而&#xff0c;雖然許多網站的文本內容可以免費訪問&#xff0c;但手動一條一條采集&#xff0c;不僅耗時耗力&#xff0c;還容易出錯。這種情況下&#xff0c;使用自動化工具來提高采集效率就顯得尤為重要。本文將介紹 八爪魚 這一…

IDI_APPLICATION 與 IDC_ARROW資源存放在工程的哪個路徑?

書籍&#xff1a;《windows程序設計(第五版)》的開始 環境&#xff1a;visual studio 2022 內容&#xff1a;HELLOWIN程序 說明&#xff1a;以下內容大部分來自騰訊元寶。 IDI_APPLICATION 和 IDC_ARROW 是 ?Windows 系統預定義的資源標識符&#xff0c;它們并不以文件形式…

算法 | 優化算法比較

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 優化算法 ?一、主流優化算法分類?1?、傳統梯度類算法?2?、啟發式算…

騰訊云HAI1元體驗:輕松調用DeepSeek-R1模型搭建網站

前言 隨著云計算和人工智能技術的不斷發展&#xff0c;構建和部署智能化的網頁變得越來越簡單。騰訊云提供的HAI&#xff08;人工智能平臺&#xff09;和DeepSeek&#xff08;智能搜索引擎&#xff09;服務&#xff0c;能幫助開發者快速搭建智能化網頁&#xff0c;提升用戶體驗…

AI Agent系列(七) -思維鏈(Chain of Thought,CoT)

AI Agent系列【七】 前言一、CoT技術詳解1.1 CoT組成1.2 CoT的特點 二、CoT的作用三、CoT的好處四、CoT適用場景五、CoT的推理結構 前言 思維鏈(Chain of Thought,CoT)&#xff0c;思維鏈就是一系列中間的推理步驟(a series of intermediate reasoning steps)&#xff0c;通過…