Vue 2 動態組件和異步組件

先閱讀 【Vue 2 組件基礎】中的初步了解動態組件。


動態組件與keep-alive

我們知道動態組件使用is屬性和component標簽結合來切換不同組件。

下面給出一個示例:

<!DOCTYPE html>
<html><head><title>Vue 動態組件</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head><body><div id="app"><!--  tab 標簽頁 --><div><button @click="tab = 'home'">首頁</button><button @click="tab = 'posts'">文章</button></div>父組件count: {{count}}<!--  動態組件 --><component :is="tab" @increment="count=$event"></component></div><script>//  注冊組件Vue.component('home', {data: function () {return {count: 0}},template: `<div><div>首頁內容</div><div>子組件count: {{count}}</div><button @click="count++;$emit('increment', count)">點擊了{{count}}次</button></div>`,});Vue.component('posts', {template: '<div>文章內容</div>'});var vm = new Vue({el: '#app',data: {tab: 'home',count: 0},});</script>
</body></html>
<script>

在這里插入圖片描述

看代碼可以知道父組件的count會在子組件count更新后變為子組件的count值。但我們切換組件后再切換回來,會發現父組件count沒變,子組件count變為初始值。這是因為,每次切換組件都會創建當前組件的新實例。

那怎么保存先前組件的狀態呢?

Vue提供了keep-alive組件。我們使用該元素將要緩存的組件包裹起來。讓我們看看效果:

<keep-alive><component :is="tab" @increment="count=$event"></component>
</keep-alive>

在這里插入圖片描述

成功解決問題!

了解更多keep-alive組件的細節。


異步組件

異步組件是一種加載組件的方式,它允許我們將組件的加載推遲到需要時再進行,以提高應用程序的性能和加載速度。

我們可以通過不同的方式使用異步組件。

1.工廠函數

使用Vue.component方法來定義一個異步組件工廠函數:

Vue.component('async-component',function(resolve,reject){//模擬異步加載,延遲一段時間后解析組件setTimeout(function(){resolve({template:'<div><h2>Async Component Content</h2></div>'})},1000)
})

使用Vue.component方法結合webpack的code-splitting來定義一個異步組件工廠函數:

Vue.component('async-component',function(resolve,reject){//這個特殊的require語法會告訴webpack自動將編譯后的異步組件拆分成不同的塊require('./AsyncComponent.vue',resolve)
})

在上面代碼中,async-component是你定義異步組件的名字,后面的工廠函數有兩個參數:resolverejectresolve是一個函數,異步加載成功時會調用它。reject則是在異步加載失敗時調用。

2.Vue.component+動態導入+webpack 2的代碼分割+ES2015的模塊語法

Vue.component(`async-webpack-example`,()=>import('./my-async-component')
);

()=>import('./my-async-component')返回一個Promise,Vue會根據Promise的狀態來自動處理異步加載和渲染的過程

3.局部注冊+動態導入

new Vue({components:{'my-component':()=>import('./my-async-component')}
})

處理加載狀態

異步組件工廠函數可以返回一個對象,該對象包含有關異步組件加載、加載中、加載失敗等情況的配置信息,這種方式允許你更加精細地控制異步組件地加載和渲染過程。下面是這種格式的異步組件配置對象的詳細解釋:

const AsyncComponent=()=({//需要加載的組件component:import('./MyComponent.vue'),//異步加載時使用的組件loading:LoadingComponent,//加載失敗時使用的組件error:ErrorComponent,//展示加載時組件的延遲時間,默認值是200(毫秒)delay:200,// 如果提供了超時時間且組件加載也超時了,// 則使用加載失敗時使用的組件。默認值是:`Infinity`,即沒有超時限制timeout: 3000
})

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

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

相關文章

Typora 相對路徑保存圖片以及 Gitee 無法顯示圖片

目錄 Typora 相對路徑保存圖片 Gitee 無法顯示圖片 Typora 相對路徑保存圖片 Step1&#xff1a;修改 Typora 的偏好設置 自動在當前目錄創建名為 "./${filename}.assets" 的文件夾粘貼圖片到 md 中時&#xff0c;圖片會自動另存到 "./${filename}.assets&qu…

iptables學習筆記

iptables的結構&#xff1a; iptables由上而下&#xff0c;由Tables&#xff0c;Chains&#xff0c;Rules組成。 一、iptables的表tables與鏈chains iptables有Filter, NAT, Mangle, Raw四種內建表&#xff1a; 1. Filter表 Filter是iptables的默認表&#xff0c;它有以下…

LVGL基本控件介紹

1. 弧(lv_arc) 特點 弧的0度在右邊&#xff0c;90度在下邊 效果圖 源碼 void lv_arc_demo(void) {/* Create an Arc */lv_obj_t* arc lv_arc_create(lv_scr_act(), NULL);/* Set Background range */lv_arc_set_bg_angles(arc, 0, 360);/* Set Forward range */lv_arc_set…

第十課:Qt 字符編碼和中文亂碼相關問題

功能描述&#xff1a;最全的 Qt 字符編碼相關知識以及中文亂碼的原因與解決辦法 一、字符編碼種類 ASCII 碼 美國人對信息交流的編碼&#xff0c;包括 26 個字母&#xff08;大小寫&#xff09;、數字和標點符號等&#xff0c;用一個字節&#xff08;8 位&#xff09;表示這些…

eNSP:VLAN-hybrid實驗應用

實驗要求&#xff1a; 拓撲圖 配置 sw1: [sw1]vlan batch 2 to 6[sw1]int Ethernet 0/0/2 [sw1-Ethernet0/0/2]port link-type access [sw1-Ethernet0/0/2]port default vlan 2 [sw1-Ethernet0/0/2]int e 0/0/4 [sw1-Ethernet0/0/4]port link-ty access [sw1-Ethernet0/0/…

74最新提案

最新提案 [do 表達式](https://es6.ruanyifeng.com/#docs/proposals#do 表達式)[throw 表達式](https://es6.ruanyifeng.com/#docs/proposals#throw 表達式)函數的部分執行管道運算符Math.signbit()雙冒號運算符[Realm API](https://es6.ruanyifeng.com/#docs/proposals#Realm…

springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 參數的作用

在Spring Boot應用中&#xff0c;可以通過配置文件來控制當找不到請求處理器&#xff08;handler&#xff09;時是否拋出異常。具體的配置參數是spring.mvc.throw-exception-if-no-handler-found。 默認情況下&#xff0c;該參數的值為false&#xff0c;即當找不到請求處理器時…

《Zookeeper》源碼分析(十四)之 投票是如何發送與接收的

目錄 MessengerWorkerSenderWorkerReceiver第5步&#xff1a;檢驗選票的epoch和version第6步&#xff1a;處理投票 Messenger Messenger管理接收到的消息以及待發送的消息&#xff0c;其源碼如下&#xff1a; 它的源碼比較簡單&#xff0c;接下來著重介紹它維護的兩個線程&a…

Docker 網絡之 ipvlan 和 macvlan

Docker ipvlan 和 macvlan 引言 本文講解了Docker 網絡模式中的 ipvlan 和 macvlan 的區別,目前自己在生產環境中使用的 ipvlan 模式非常問題.也解決了實際業務問題. IPvlan L2 mode example ipvlan 無需網卡混雜模式 , 運行如下命令后可以生成一個 vlan 子接口 , 會和主網卡…

ElasticSearch的客戶端操作

ElasticSearch的客戶端操作 1、客戶端介紹 官方文檔地址&#xff1a; https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 實際開發中&#xff0c;有多種方式操作Elasticsearch&#xff1a; 客戶端工具&#xff1a;發送http請求(RESTful風格)操作…

CF1195E OpenStreetMap 題解

很好的單調隊列題。 題目傳送門 題目意思&#xff1a; 給定一個 n m n\times m nm 的矩陣&#xff0c;求出所有大小為 a b a\times b ab 的子矩形中的最小值的和。 思路&#xff1a; 通過題目給的要求建立二維數組 h h h。通過單調隊列一行一行地掃&#xff0c;將掃出來…

Azure Blob存儲使用

創建存儲賬戶,性能選擇標準即可&#xff0c;冗余選擇本地冗余存儲即可 容器選擇類別選擇專用即可 可以上傳文件到blob中 打開文件可以看到文件的訪問路徑 4.編輯中可以修改文件 復制鏈接&#xff0c;嘗試訪問&#xff0c;可以看到沒有辦法訪問&#xff0c;因為創建容器的時候選…

spring(15) SpringBoot啟動過程

目錄 一、過程簡介二、過程流程圖三、源碼分析1、運行 SpringApplication.run() 方法2、確定應用程序類型3、加載所有的初始化器4、加載所有的監聽器5、設置程序運行的主類6、開啟計時器7、將 java.awt.headless 設置為 true8、獲取并啟用監聽器9、設置應用程序參數10、準備環境…

LeetCode450. 刪除二叉搜索樹中的節點

450. 刪除二叉搜索樹中的節點 文章目錄 [450. 刪除二叉搜索樹中的節點](https://leetcode.cn/problems/delete-node-in-a-bst/)一、題目二、題解方法一&#xff1a;遞歸&#xff08;一種麻煩的方法&#xff09;方法二&#xff1a;優化后的遞歸 一、題目 給定一個二叉搜索樹的根…

SpringBoot校驗,DTO文件中常用的注解應用案例.

在觀看本篇文章之前&#xff0c;可以先參考我之前寫的一篇文章 “ Spring5&#xff0c;Service層對DTO文件進行數據格式校驗. ” &#xff0c;這篇文章是介紹在 Service層 對DTO文件的校驗。 以下方的 CompanyDTO 文件為例&#xff0c;講解不同的注解使用場景&#xff0c;以及…

論文閱讀——Imperceptible Adversarial Attack via Invertible Neural Networks

Imperceptible Adversarial Attack via Invertible Neural Networks 作者&#xff1a;Zihan Chen, Ziyue Wang, Junjie Huang*, Wentao Zhao, Xiao Liu, Dejian Guan 解決的問題&#xff1a;雖然視覺不可感知性是對抗性示例的理想特性&#xff0c;但傳統的對抗性攻擊仍然會產…

每天一道leetcode:1129. 顏色交替的最短路徑(圖論中等廣度優先遍歷)

今日份題目&#xff1a; 給定一個整數 n&#xff0c;即有向圖中的節點數&#xff0c;其中節點標記為 0 到 n - 1。圖中的每條邊為紅色或者藍色&#xff0c;并且可能存在自環或平行邊。 給定兩個數組 redEdges 和 blueEdges&#xff0c;其中&#xff1a; redEdges[i] [ai, bi…

Dubbo Spring Boot Starter 開發微服務應用

環境要求 系統&#xff1a;Windows、Linux、MacOS JDK 8 及以上&#xff08;推薦使用 JDK17&#xff09; Git IntelliJ IDEA&#xff08;可選&#xff09; Docker &#xff08;可選&#xff09; 項目介紹 在本任務中&#xff0c;將分為 3 個子模塊進行獨立開發&#xff…

LINUX學習筆記_GIT操作命令

LINUX學習筆記 GIT操作命令 基本命令 git init&#xff1a;初始化倉庫git status&#xff1a;查看文件狀態git add&#xff1a;添加文件到暫存區&#xff08;index&#xff09;git commit -m “注釋”&#xff1a;提交文件到倉庫&#xff08;repository&#xff09;git log&a…

計算機組成與設計 Patterson Hennessy 筆記(一)MIPS 指令集

計算機的語言&#xff1a;匯編指令集 也就是指令集。本書主要介紹 MIPS 指令集。 匯編指令 算數運算&#xff1a; add a,b,c # abc sub a,b,c # ab-cMIPS 匯編的注釋是 # 號。 由于MIPS中寄存器大小32位&#xff0c;是基本訪問單位&#xff0c;因此也被稱為一個字 word。M…