「Vue3系列」Vue3 條件語句/循環語句

文章目錄

  • 一、Vue3 條件語句
    • 1. v-if
    • 2. v-else-if 和 v-else
    • 3. v-show
    • 4. 使用計算屬性進行條件渲染
    • 5. v-if與v-show比較
      • v-if
      • v-show
      • 性能考慮
      • 使用場景
  • 二、Vue3 循環語句
    • 1. 遍歷數組
    • 2. 遍歷對象
    • 3. 使用索引
    • 4. 注意事項
  • 三、相關鏈接

一、Vue3 條件語句

在 Vue 3 中,你可以使用條件語句來動態地控制模板中的渲染內容。Vue 提供了多種方式來實現條件渲染,包括 v-ifv-else-ifv-elsev-show 指令。

1. v-if

v-if 指令用于根據條件來渲染一個元素或組件。如果條件為真,元素或組件會被渲染到 DOM 中;如果條件為假,元素或組件不會被渲染。

<template><div><p v-if="isVisible">這段文字將會顯示</p></div>
</template><script>
export default {data() {return {isVisible: true};}
};
</script>

在這個例子中,isVisible 是一個布爾值,當它為 true 時,<p> 元素會被渲染到 DOM 中;當它為 false 時,<p> 元素不會被渲染。

2. v-else-if 和 v-else

你可以使用 v-else-ifv-else 來添加額外的條件。

<template><div><p v-if="score > 90">優秀</p><p v-else-if="score > 60">及格</p><p v-else>不及格</p></div>
</template><script>
export default {data() {return {score: 80};}
};
</script>

在這個例子中,根據 score 的值,不同的 <p> 元素會被渲染。

3. v-show

v-show 指令與 v-if 類似,但它不會基于條件來添加或移除元素,而是簡單地切換元素的 CSS 的 display 屬性。這意味著即使元素被隱藏,它仍然會保留在 DOM 中。

<template><div><p v-show="isVisible">這段文字將會根據條件顯示或隱藏</p></div>
</template><script>
export default {data() {return {isVisible: false};}
};
</script>

在這個例子中,當 isVisibletrue 時,<p> 元素會顯示;當為 false 時,<p> 元素會被隱藏,但它的 DOM 元素仍然存在。

4. 使用計算屬性進行條件渲染

對于更復雜的條件邏輯,你可以使用計算屬性來返回一個布爾值,并在模板中使用這個布爾值來決定是否渲染某個元素。

<template><div><p v-if="shouldShowMessage">這是一個消息</p></div>
</template><script>
export default {data() {return {userLevel: 2};},computed: {shouldShowMessage() {return this.userLevel >= 2;}}
};
</script>

在這個例子中,shouldShowMessage 是一個計算屬性,它返回一個布爾值,表示是否應該顯示消息。

5. v-if與v-show比較

在 Vue 3 中,v-ifv-show 都用于條件性地渲染元素,但它們在實現方式和性能上有一些區別。

v-if

v-if 是一個“真正的”條件渲染,因為它會確保在切換過程中條件塊內的事件監聽器和子組件適當地被銷毀和重建。v-if 是惰性的:如果在初始渲染時條件為假,則什么也不做——直到條件第一次變為真時,才會開始渲染條件塊。

特點:

  • 條件為假時,不會渲染元素到 DOM 中。
  • 每次條件改變都會銷毀和重建元素及其子組件,包括所有的事件監聽器。
  • 條件為假時,不會有任何性能開銷,因為 DOM 中沒有對應的元素。
  • 更加適合不頻繁切換的條件渲染。

v-show

v-show 就簡單得多——不論初始條件是什么,元素總是會被渲染,并且只是簡單地基于 CSS 進行切換。

特點:

  • 無論條件真假,元素都會被渲染到 DOM 中。
  • 條件為假時,通過 CSS 設置 display 屬性為 none 來隱藏元素。
  • 條件改變時,元素只是簡單地從可見變為不可見,不會有銷毀和重建的開銷。
  • 適合頻繁切換的條件渲染。

性能考慮

如果你非常關心性能,并且條件不頻繁切換,使用 v-if 會更好,因為這樣可以避免不必要的渲染和銷毀/重建的開銷。然而,如果條件頻繁切換,使用 v-show 會更好,因為它只是簡單地切換 CSS 屬性,而不會涉及組件的銷毀和重建。

使用場景

  • 如果一個元素需要非常頻繁地切換,使用 v-show 會更好。
  • 如果在運行時條件不太可能改變,或者元素非常重(有很多子組件或監聽器),使用 v-if 更好。

在實際應用中,可以根據具體的需求來選擇使用 v-if 還是 v-show。在大多數情況下,Vue 的優化足以讓這兩種方式在性能上相差無幾,因此選擇哪種方式更多是基于代碼的可讀性和維護性的考慮。

二、Vue3 循環語句

在 Vue.js 中,你可以使用 v-for 指令來執行循環操作,遍歷數組或對象,并基于每個元素或屬性渲染一個模板塊。

1. 遍歷數組

使用 v-for 指令遍歷數組時,你可以指定一個別名來代表當前元素,并使用 in 關鍵字來指定要遍歷的數組。

<template><div><ul><li v-for="item in items" :key="item.id">{{ item.text }}</li></ul></div>
</template><script>
export default {data() {return {items: [{ id: 1, text: 'Item 1' },{ id: 2, text: 'Item 2' },{ id: 3, text: 'Item 3' }]};}
};
</script>

在這個例子中,items 是一個包含對象的數組,我們使用 v-for="item in items" 來遍歷這個數組,并為每個對象渲染一個 <li> 元素。:key="item.id" 是用來跟蹤每個節點的身份,從而重用和重新排序現有元素。

2. 遍歷對象

你也可以使用 v-for 來遍歷對象的屬性。

<template><div><ul><li v-for="(value, name, index) in object" :key="index">{{ name }}: {{ value }}</li></ul></div>
</template><script>
export default {data() {return {object: {firstName: 'John',lastName: 'Doe',age: 30}};}
};
</script>

在這個例子中,object 是一個包含屬性的對象。v-for="(value, name, index) in object" 遍歷這個對象的每個屬性,并輸出屬性的名稱和值。

3. 使用索引

在遍歷數組時,你還可以使用第三個參數來獲取當前元素的索引。

<template><div><ul><li v-for="(item, index) in items" :key="index">{{ index + 1 }}. {{ item.text }}</li></ul></div>
</template><script>
export default {data() {return {items: [{ text: 'Item 1' },{ text: 'Item 2' },{ text: 'Item 3' }]};}
};
</script>

在這個例子中,我們使用 v-for="(item, index) in items" 來同時獲取當前元素和它的索引,然后在列表項中顯示索引和文本。

4. 注意事項

  • 當使用 v-for 時,每個節點必須有一個唯一的 key 屬性,這有助于 Vue.js 跟蹤每個節點的身份,從而實現高效的 DOM 更新。
  • 盡量避免在同一元素上同時使用 v-ifv-for,因為這可能會導致渲染錯誤。如果確實需要條件渲染,可以考慮將元素包裹在一個父元素中,并在父元素上使用 v-if
  • 當遍歷的對象或數組發生變化時,Vue.js 會自動更新 DOM 以反映這些變化。

三、相關鏈接

  1. Vue3官方地址
  2. Vue3中文文檔
  3. 「Vue3系列」Vue3簡介及安裝
  4. 「Vue3系列」Vue3起步/創建項目
  5. 「Vue3系列」Vue3指令
  6. 「Vue3系列」Vue3 模板語法

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

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

相關文章

盲人出行:科技創造美好的未來

在繁忙的都市中&#xff0c;我每天都要面對許多挑戰&#xff0c;盲人出行安全保障一直難以得到落實。我看不見這個世界&#xff0c;只能依靠觸覺和聽覺來感知周圍的一切。然而&#xff0c;我從未放棄過對生活的熱愛和對未來的憧憬。在一次機緣巧合下&#xff0c;我認識了一款名…

C3_W2_Collaborative_RecSys_Assignment_吳恩達_中英_Pytorch

Practice lab: Collaborative Filtering Recommender Systems(實踐實驗室:協同過濾推薦系統) In this exercise, you will implement collaborative filtering to build a recommender system for movies. 在本次實驗中&#xff0c;你將實現協同過濾來構建一個電影推薦系統。 …

VLAN實驗報告

實驗要求&#xff1a; 實驗參考圖&#xff1a; 實驗過程&#xff1a; r1: [r1]int g 0/0/0.1 [r1-GigabitEthernet0/0/0.1]ip address 192.168.1.1 24 [r1-GigabitEthernet0/0/0.1]dot1q termination vid 2 [r1-GigabitEthernet0/0/0.1]arp broadcast enable [r1]int g 0/0/…

Mysql學習之MVCC解決讀寫問題

多版本并發控制 什么是MVCC MVCC &#xff08;Multiversion Concurrency Control&#xff09;多版本并發控制。顧名思義&#xff0c;MVCC是通過數據行的多個版本管理來實現數據庫的并發控制。這項技術使得在InnoDB的事務隔離級別下執行一致性讀操作有了保證。換言之&#xff0…

django的模板渲染中的【高級定制】:按數據下標id來提取數據

需求&#xff1a; 1&#xff1a;在一個頁面中顯示一張數據表的數據 2&#xff1a;不能使用遍歷的方式 3&#xff1a;頁面中的數據允許通過admin后臺來進行修改 4&#xff1a;把一張數據表的某些內容渲染到[xxx.html]頁面 5&#xff1a;如公司的新商品頁面&#xff0c;已有固定的…

《夢幻西游》本人收集的34個單機版游戲,有詳細的視頻架設教程,值得收藏

夢幻西游這款游戲&#xff0c;很多人玩&#xff0c;喜歡研究的趕快下載吧。精心收集的34個版本。不容易啊。里面有詳細的視頻架設教程&#xff0c;可以外網呢。 《夢幻西游》本人收集的34個單機版游戲&#xff0c;有詳細的視頻架設教程&#xff0c;值得收藏 下載地址&#xff1…

FDM打印機學習

以下內容摘自網絡&#xff0c;僅供學習討論&#xff0c;侵刪。 持續更新。。。 FDM打印機是通過噴頭融化絲狀耗材&#xff08;PLA&#xff0c;ABS等材料&#xff09;&#xff0c;然后逐層涂在熱床上&#xff0c;一層一層逐級抬高。 結構分類 Prusa i3型是一種龍門結構&#…

JavaWeb 下拉菜單怎么實現選擇不同的顏色?

在JavaWeb中實現下拉菜單選擇不同顏色的功能是一種常見的需求&#xff0c;可以通過HTML、CSS和JavaScript結合Java后端來實現。 第一步&#xff1a;編寫HTML頁面 首先&#xff0c;我們需要創建一個HTML頁面&#xff0c;其中包含一個下拉菜單和一個用于顯示顏色的區域。 <…

python 爬取文本內容并寫入json文件

背景: 項目需要從html 提取說明書目錄 實現: 由于html是包含所有內容,所以將其中目錄部分手動重新生成一個html 文件dir26.html python import requests from bs4 import BeautifulSoup import jsonfilename "dir26.html" # 替換為實際的文件路徑 with open(fil…

ES 備份索引

1、先創建索引 PUT file_info_sps_demo1 {"settings": {"index": {"number_of_shards": "1","blocks": {"read_only_allow_delete": "true"},"max_result_window": "500000",&quo…

階躍信號與沖擊信號

奇異信號&#xff1a;信號與系統分析中&#xff0c;經常遇到函數本身有不連續點&#xff08;跳變電&#xff09;或其導函數與積分有不連續點的情況&#xff0c;這類函數稱為奇異函數或奇異信號&#xff0c;也稱之為突變信號。以下為一些常見奇異函數。 奇異信號 單位斜變信號 …

C#雙向鏈表實現:Append()方法追加并顯示數據

目錄 一、涉及到的知識點 1.定義 2.雙向鏈表與單向鏈表的區別 二、實例 一、涉及到的知識點 1.定義 在雙向鏈表中&#xff0c;每個節點有兩個指針域&#xff0c;一個指向它的前一個節點&#xff08;即直接前驅&#xff09;&#xff0c;另一個指向它的后一個節點&#xff0…

Ubuntu18.04安裝RTX2060顯卡驅動+CUDA+cuDNN

Ubuntu18.04安裝RTX2060顯卡驅動CUDAcuDNN 1 安裝RTX2060顯卡驅動1.1 查看當前顯卡是否被識別1.2 安裝驅動依賴1.3 安裝桌面顯示管理器1.4 下載顯卡驅動1.5 禁用nouveau1.6 安裝驅動1.7 查看驅動安裝情況 2 安裝CUDA2.1 查看當前顯卡支持的CUDA版本2.2 下載CUDA Toolkit2.3 安裝…

車燈修復UV膠的優缺點有哪些?

車燈修復UV膠的優點如下&#xff1a; 優點&#xff1a; 快速固化&#xff1a;通過紫外光照射&#xff0c;UV膠可以在5-15秒內迅速固化&#xff0c;提高了修復效率。高度透明&#xff1a;固化后透光率高&#xff0c;幾乎與原始車燈材料無法區分&#xff0c;修復后車燈外觀更加…

對緩沖區的初步認識——制作進度條小程序

對緩沖區的初步認識--進度條小程序 前言預備知識回車和換行的區別輸出緩沖區/n 有清空輸出緩沖區的作用stdout是什么&#xff1f;驗證一切皆文件為什么是\n行刷新&#xff1f; 倒計時程序原理 代碼實現為什么這里要強制刷新&#xff1f;沒有會怎樣&#xff1f;為什么是輸出的是…

RabbitMQ安裝及使用

系列文章目錄 文章目錄 系列文章目錄前言一、下載二、安裝三、插件安裝四、配置五、權限六、集群模式 前言 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站&#xff0c;這篇文章男女通用&…

【MATLAB源碼-第154期】基于matlab的OFDM系統多徑信道下塊狀和梳妝兩種導頻插入方式誤碼率對比仿真。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;Orthogonal Frequency Division Multiplexing&#xff0c;正交頻分復用&#xff09;是一種高效的無線信號傳輸技術&#xff0c;廣泛應用于現代通信系統&#xff0c;如Wi-Fi、LTE和5G。OFDM通過將寬帶信道劃分…

[機緣參悟-158] :西游記中的“佛” 、“道”之爭

目錄 前言 一、西游記中的佛教元素 1.1 佛教元素 1.2 西游記佛教思想 1.3 佛教的三界五行&#xff1a;物質世界 1.4 佛教中不在三界內&#xff0c;不在五行中&#xff1a;精神世界 二、西游記中的道教元素 2.1 主要元素 2.2 道家思想 三、“佛”如何兼容“道” 3.1 …

RK3568 Android12 適配抖音 各大APP

RK3568 Android12 適配抖音 各大APP SOC RK3568 system:Android 12 平臺要適配抖音和各大APP 平臺首先打開抖音發現攝像頭預覽尺寸不對只存在右上角,我將抖音APP裝在手機上預覽,發現是全屏 一開始瀏覽各大博客 給出的解決方法是修改framework 設置為全屏顯示: framewo…

2369. 檢查數組是否存在有效劃分

2369. 檢查數組是否存在有效劃分 題目鏈接&#xff1a;2369. 檢查數組是否存在有效劃分 代碼如下&#xff1a; //動態規劃 class Solution { public:bool validPartition(vector<int>& nums) {vector<int> dp(nums.size()1,false);//dp[i]表示前i個元素組成的…