Vue 程式札記 : 指令 v-for

更新於 2024/03/09閱讀時間約 6 分鐘

在Vue中,v-for指令是用於渲染列表數據。本文將介紹v-for指令的用法,並提供簡單的範例來幫助你理解如何在你的 Vue 應用中有效地使用v-for指令。

什麼是 v-for 指令?

v-for是 Vue 中用於陣列渲染的一個指令。它可以用來渲染一組數據,每個數據項都可以使用模板進行展示,v-for指令的基本語法如下:

<li v-for="item in items">{{ item }}</li>

在這個範例中,items是一個陣列,item是陣列中的每個元素。v-for指令會遍歷items陣列,並為每個item渲染一個<li>元素。

v-for 遍歷陣列渲染

讓我們通過一個實際的範例來看看如何使用v-for來渲染一個簡單的陣列:

<template>
<div>
<ul>
<li v-for="fruit in fruits">{{ fruit }}</li>
</ul>
</div>
</template>

<script>
import { ref } from 'vue';

export default {
setup() {
const fruits = ref(['蘋果', '香蕉', '橙子']);

return { fruits };
}
}
</script>

在這個範例中,我們有一個名為fruits的陣列,包含三種水果,我們使用v-for指令來遍歷fruits陣列,並為每種水果渲染一個<li>元素。

在 v-for 中使用 index

有時候,我們可能需要訪問當前項目的索引。v-for指令允許我們將索引作為第二個參數來使用:

<template>
<div>
<ul>
<li v-for="(fruit, index) in fruits">{{ index }} - {{ fruit }}</li>
</ul>
</div>
</template>

<script>
import { ref } from 'vue';

export default {
setup() {
const fruits = ref(['蘋果', '香蕉', '橙子']);

return { fruits };
}
}
</script>

在這個範例中,我們除了顯示水果的名稱外,還顯示了水果在陣列中的索引。

v-for 遍歷物件渲染

v-for指令不僅可以用於陣列,還可以用於物件的屬性。例如:

<template>
<div>
<ul>
<li v-for="(obj, index) in objects" :key="index">
{{ index + 1 }}. 姓名: {{ obj.name }},年齡: {{ obj.age }},職業: {{ obj.job }}
</li>
</ul>
</div>
</template>

<script>
import { ref } from 'vue';

export default {
setup() {
const objects = ref([
{
name: '張三',
age: 30,
job: '工程師'
},
{
name: '李四',
age: 25,
job: '設計師'
}
]);

return { objects };
}
}
</script>

在這個範例中,我們使用 v-for 指令來遍歷 objects ,並為每個物件渲染一個列表項目 (<li>)。每個列表項目都顯示了物件的 nameagejob 屬性。我們還使用了 :key:key是一個重要的屬性,它用於跟踪每個節點的身份,從而提高渲染性能。這裡我們使用了索引 index 作為鍵。

v-for 注意事項

1.避免使用索引作為 key:如果列表項目的順序可能會改變,不應使用索引作為 key,因為這可能導致渲染錯誤,如果你的數據項目有一個唯一的屬性(例如 id),請使用該值作為 key,如果沒有唯一值,可以通過組合索引和屬性值來創建一個唯一的 key。

<li v-for="(item, index) in items" :key="`${item.name}-${index}`">{{ item.name }}</li>

2.v-if 與 v-for:不應將 v-ifv-for 用於同一元素,因為 v-if 會優先於 v-for 被評估,但是,你可以將 v-for 放在 <template> 標籤上,然後在子元素上使用 v-if

<template v-for="item in items">
<li v-if="item.visible" :key="item.id">{{ item.text }}</li>
</template>

😊 感謝你的耐心閱讀,若是你喜歡這篇內容,可以透過以下方式表達你的喜歡 😊

❤️按個愛心|💬留言互動|🔗分享此文|📌追蹤阿梧|☕請喝咖啡

avatar-img
60會員
91內容數
「梧笙」即「吾生」,意即我的生命,朋友都叫我「阿梧(Awu)」,高雄人。我喜歡學習新技能,從程式設計到網路工具,再到社群經營和影片剪輯。日常興趣是打遊戲、看動漫、讀小說和聽音樂。我會把這些興趣寫成文章,如果你有任何想法或問題,歡迎來信到我的郵箱 aowulife109@gmail.com
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
梧笙の領域展開 的其他內容
在 Vue 3 的 Composition API 中,引入了兩個重要的響應式數據處理工具:ref 和 reactive,本文將介紹ref 和 reactive,並透過實際範例來解釋它們的用法和差異。
在 Vue 中,watch是用於進行數據監聽的,可以用來響應式的監聽資料的變化並執行相應的操作。本文介紹watch功能,並透過實際範例讓你更好的理解。
在 Vue 中,methods和computed是用於定義元件的行為和計算屬性。本文將介紹methods和computed屬性的使用方法和區別,並通過實際範例來幫助你理解。
Vue 提供了兩種不同的 API 來建立和管理組件:Option API 和 Composition API。本文將介紹這兩種 API 的特點和差異,並透過實際範例來理解它們的使用方式。
Vue 的單文件組件(Single File Components,SFC)是一種特殊的文件格式,讓我們可以將Vue 組件的模板、邏輯和樣式都寫在單一個文件當中。本文將介紹 Vue SFC,幫助開發者理解和使用 Vue SFC。
Vue 是尤雨溪所開發的一個前端框架,Vue 提供了響應式數據綁定和組件化的開發模式,能方便開發者構建出具有良好交互性的前端應用。而 Vite 則是一個前端構建工具,用途是提供更快的開發體驗。然後,本文將介紹如何使用 Vite 建立一個 Vue 專案的開發環境,這是你學習 Vue 的第一步。
在 Vue 3 的 Composition API 中,引入了兩個重要的響應式數據處理工具:ref 和 reactive,本文將介紹ref 和 reactive,並透過實際範例來解釋它們的用法和差異。
在 Vue 中,watch是用於進行數據監聽的,可以用來響應式的監聽資料的變化並執行相應的操作。本文介紹watch功能,並透過實際範例讓你更好的理解。
在 Vue 中,methods和computed是用於定義元件的行為和計算屬性。本文將介紹methods和computed屬性的使用方法和區別,並通過實際範例來幫助你理解。
Vue 提供了兩種不同的 API 來建立和管理組件:Option API 和 Composition API。本文將介紹這兩種 API 的特點和差異,並透過實際範例來理解它們的使用方式。
Vue 的單文件組件(Single File Components,SFC)是一種特殊的文件格式,讓我們可以將Vue 組件的模板、邏輯和樣式都寫在單一個文件當中。本文將介紹 Vue SFC,幫助開發者理解和使用 Vue SFC。
Vue 是尤雨溪所開發的一個前端框架,Vue 提供了響應式數據綁定和組件化的開發模式,能方便開發者構建出具有良好交互性的前端應用。而 Vite 則是一個前端構建工具,用途是提供更快的開發體驗。然後,本文將介紹如何使用 Vite 建立一個 Vue 專案的開發環境,這是你學習 Vue 的第一步。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
如果前人已經走出一條最佳路徑,我們只顧著欣賞也會到山頂 關注點的改變 一個好的架構都會希望讓開發者能專注在”業務邏輯”的實現,可以提高專案的開發效率、減少開發者非關業務邏輯的事情而煩惱。例如: 開發者A: 請問元件的對話窗如何在確認時控制關閉或開啟狀態? 這個實際案例是架構師認為對話窗的動作
我在學習vue的過程中,一開始是先從輕前端(用CDN引入)開始學。這時候看Vue的官方文件會有些困惑,原因是有沒有用vite建構,在元件寫法上會有些差異。所以我寫下這篇筆記來整理這兩者寫法上的差異。 起手式 1.非建構:使用cdn 在html的header中插入以下script標籤 <s
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
Thumbnail
前言介紹 在 golang 1.16之後官方提供的工具包裡面有個 `embed` 可以使用,這使得把檔案嵌入 golang 的二進制編譯更為容易,以至於方便我們部署一些並非 .go 的副檔名檔案。 這裡要介紹的是如何把 vue 作為前端,編譯至我們的 golang 專案內,起一個網頁服務。 在開始
Thumbnail
為什麼會參加這個課程 2022年是個不一樣的年,因為當初自學由設計轉前端工程師、一路上跌跌撞撞因為想要把基底打穩所以今年下定了決心從2022切版班、Js直播班、一路跟到目前2022秋季Vue直播班。 Vue直播班的心得 前兩週其實都還跟得上,但到了第三週對我而言確實感覺有些難了啊~正在心裡徬徨第三週
父元件 傳遞變數時須加上冒號 子元件 接收props用法如下 本筆記參考: 1. https://www.netlify.com/blog/understanding-defineprops-and-defineemits-in-vue-3.2 2. https://juejin.cn/post/7
慢慢學習前端的知識,學著學著也學到框架了。現在是做UIUX,為了和前端溝通更方便才踏入這個領域,學習一點後還真的更方便了,聽他們講同步非同步或是router,大概懂在說什麼,也開始知道寫判斷式的麻煩XD 原本以為上完課就能直接轉職試試別條路,不料學習的路程不算順遂,動不動就卡關,知道的越多就越明白自
最近在把 Tailwind CSS 加入我的技能樹中,其實像這種 Bootstrap, Tailwind CSS 都是很基本前端需要掌握的 CSS 相關工具 但是我其實對美工比較沒那麼大的興趣,我對功能、效能、安全比較感興趣,所以後端、架站、DevOps、一些安全防護玩了一圈,現在來加強我的排版功力
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
如果前人已經走出一條最佳路徑,我們只顧著欣賞也會到山頂 關注點的改變 一個好的架構都會希望讓開發者能專注在”業務邏輯”的實現,可以提高專案的開發效率、減少開發者非關業務邏輯的事情而煩惱。例如: 開發者A: 請問元件的對話窗如何在確認時控制關閉或開啟狀態? 這個實際案例是架構師認為對話窗的動作
我在學習vue的過程中,一開始是先從輕前端(用CDN引入)開始學。這時候看Vue的官方文件會有些困惑,原因是有沒有用vite建構,在元件寫法上會有些差異。所以我寫下這篇筆記來整理這兩者寫法上的差異。 起手式 1.非建構:使用cdn 在html的header中插入以下script標籤 <s
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
Thumbnail
前言介紹 在 golang 1.16之後官方提供的工具包裡面有個 `embed` 可以使用,這使得把檔案嵌入 golang 的二進制編譯更為容易,以至於方便我們部署一些並非 .go 的副檔名檔案。 這裡要介紹的是如何把 vue 作為前端,編譯至我們的 golang 專案內,起一個網頁服務。 在開始
Thumbnail
為什麼會參加這個課程 2022年是個不一樣的年,因為當初自學由設計轉前端工程師、一路上跌跌撞撞因為想要把基底打穩所以今年下定了決心從2022切版班、Js直播班、一路跟到目前2022秋季Vue直播班。 Vue直播班的心得 前兩週其實都還跟得上,但到了第三週對我而言確實感覺有些難了啊~正在心裡徬徨第三週
父元件 傳遞變數時須加上冒號 子元件 接收props用法如下 本筆記參考: 1. https://www.netlify.com/blog/understanding-defineprops-and-defineemits-in-vue-3.2 2. https://juejin.cn/post/7
慢慢學習前端的知識,學著學著也學到框架了。現在是做UIUX,為了和前端溝通更方便才踏入這個領域,學習一點後還真的更方便了,聽他們講同步非同步或是router,大概懂在說什麼,也開始知道寫判斷式的麻煩XD 原本以為上完課就能直接轉職試試別條路,不料學習的路程不算順遂,動不動就卡關,知道的越多就越明白自
最近在把 Tailwind CSS 加入我的技能樹中,其實像這種 Bootstrap, Tailwind CSS 都是很基本前端需要掌握的 CSS 相關工具 但是我其實對美工比較沒那麼大的興趣,我對功能、效能、安全比較感興趣,所以後端、架站、DevOps、一些安全防護玩了一圈,現在來加強我的排版功力