最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue列表渲染v-for用法完全解析

 更新時(shí)間:2026年03月02日 09:27:01   作者:Sunny.221  
v-for是Vue.js中用于循環(huán)渲染元素的指令,非常強(qiáng)大但也需要遵循一些最佳實(shí)踐,下面這篇文章主要介紹了Vue列表渲染v-for用法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. v-for 基礎(chǔ)語(yǔ)法

遍歷數(shù)組

v-for指令用于基于源數(shù)據(jù)多次渲染元素,是Vue.js中最常用的列表渲染方式。

基本用法(不獲取索引)

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

獲取索引值

<ul>
    <li v-for="(item, index) in names">{{index+1}}.{{item}}</li>
</ul>

遍歷對(duì)象

v-for也可以用于遍歷對(duì)象的屬性,支持三種參數(shù)格式。

僅獲取值

在遍歷對(duì)象的過程中,如果只是獲取一個(gè)值,那么獲取到的是value

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

獲取鍵和值

獲取key和value 格式:(value, key)

<ul>
    <li v-for="(value, key) in info">{{value}} - {{key}}</li>
</ul>

獲取鍵、值和索引

獲取key和value和index 格式:(value, key, index)

<ul>
    <li v-for="(value, key, index) in info">{{value}} - {{key}} - {{index}}</li>
</ul>

2. 關(guān)鍵屬性:key的重要性

為什么需要key

官方推薦我們?cè)谑褂胿-for時(shí),給對(duì)應(yīng)的元素或組件添加上一個(gè) :key 屬性。key的作用主要是為了更高效的更新虛擬DOM。

  • 性能優(yōu)化:key幫助Vue識(shí)別哪些元素被改變、添加或移除,以優(yōu)化渲染性能

  • 元素追蹤:Vue使用"就地復(fù)用"策略,key確保元素被正確跟蹤

  • 避免渲染錯(cuò)誤:唯一key防止列表更新時(shí)出現(xiàn)意外的DOM操作

正確使用key

<!-- 推薦:使用唯一標(biāo)識(shí)符 -->
<ul>
    <li v-for="item in letters" :key="item">{{item}}</li>
</ul>

<!-- 避免使用索引作為key -->
<ul>
    <li v-for="(item, index) in items" :key="index">{{item}}</li>
</ul>

3. 高級(jí)用法和技巧

遍歷數(shù)字范圍

<span v-for="n in 5" :key="n">{{ n }}</span>

這將渲染數(shù)字1到5。

使用template元素

當(dāng)需要循環(huán)渲染多個(gè)元素時(shí),可以使用<template>標(biāo)簽。

<template v-for="item in items">
    <h3>{{ item.title }}</h3>
    <p>{{ item.description }}</p>
</template>

嵌套循環(huán)

<div v-for="category in categories" :key="category.id">
    <h3>{{ category.name }}</h3>
    <ul>
        <li v-for="item in category.items" :key="item.id">
            {{ item.name }}
        </li>
    </ul>
</div>

4. 性能優(yōu)化最佳實(shí)踐

避免v-for與v-if同時(shí)使用

不推薦的做法

<li v-for="user in users" v-if="user.isActive" :key="user.id">
    {{ user.name }}
</li>

推薦的做法

<!-- 使用計(jì)算屬性過濾 -->
<li v-for="user in activeUsers" :key="user.id">
    {{ user.name }}
</li>

<script>
computed: {
    activeUsers() {
        return this.users.filter(user => user.isActive);
    }
}
</script>

使用計(jì)算屬性處理復(fù)雜數(shù)據(jù)

<template>
    <ul>
        <li v-for="item in filteredItems" :key="item.id">
            {{ item.name }}
        </li>
    </ul>
</template>

<script>
export default {
    computed: {
        filteredItems() {
            return this.items.filter(item => item.price < 50);
        }
    }
}
</script>

5. 響應(yīng)式數(shù)組更新

在Vue.js中,數(shù)組的響應(yīng)式處理是一個(gè)非常重要的概念。Vue能夠檢測(cè)到以下數(shù)組方法的變化并自動(dòng)更新視圖:

  • push(), pop()

  • shift(), unshift()

  • splice(), sort(), reverse()

Vue響應(yīng)式數(shù)組方法速查表

方法類型

方法名稱

是否響應(yīng)式

功能描述

變異方法?

push(), pop(), shift(), unshift(), splice(), sort(), reverse()

? 是

這些方法會(huì)改變?cè)瓟?shù)組,Vue能夠檢測(cè)到變化并更新視圖

替換方法?

filter(), concat(), slice()

?? 需重新賦值

返回新數(shù)組,需要將結(jié)果賦值給原數(shù)組才能觸發(fā)更新

索引操作?

array[index] = value

? 否

直接通過索引修改元素,Vue無法檢測(cè)到變化

響應(yīng)式數(shù)組方法詳解

1. 七大變異方法(響應(yīng)式)

Vue重寫了數(shù)組的7個(gè)原生方法,使其能夠觸發(fā)視圖更新:

  • push()? - 在數(shù)組末尾添加元素

    this.letters.push('F'); // 添加單個(gè)元素
    this.letters.push('F', 'G', 'H'); // 添加多個(gè)元素
  • pop()? - 刪除并返回?cái)?shù)組的最后一個(gè)元素

    this.letters.pop(); // 刪除最后一個(gè)元素
  • shift()? - 刪除并返回?cái)?shù)組的第一個(gè)元素

    this.letters.shift(); // 刪除第一個(gè)元素
  • unshift()? - 在數(shù)組開頭添加元素

    this.letters.unshift('Z'); // 在開頭添加單個(gè)元素
    this.letters.unshift('X', 'Y', 'Z'); // 添加多個(gè)元素
  • splice()? - 多功能方法(刪除/插入/替換)

    // 刪除:從索引1開始刪除1個(gè)元素
    this.letters.splice(1, 1);
    
    // 替換:從索引1開始替換3個(gè)元素
    this.letters.splice(1, 3, 'M', 'N', 'O');
    
    // 插入:從索引1開始插入元素(不刪除)
    this.letters.splice(1, 0, 'X', 'Y', 'Z');
  • sort()? - 對(duì)數(shù)組元素進(jìn)行排序

    this.letters.sort(); // 默認(rèn)按字母順序排序
  • reverse()? - 反轉(zhuǎn)數(shù)組元素的順序

    this.letters.reverse(); // 將數(shù)組反轉(zhuǎn)

2. 非響應(yīng)式操作及解決方案

直接通過索引修改元素不會(huì)觸發(fā)更新

// 以下操作不會(huì)觸發(fā)視圖更新!
this.letters[0] = 'BBB'; // ? 非響應(yīng)式

解決方案

  • 使用splice()方法

    this.letters.splice(0, 1, 'BBB'); // ? 響應(yīng)式
  • 使用Vue.set()或this.$set()

    Vue.set(this.letters, 0, 'BBB'); // ? 響應(yīng)式
    // 或
    this.$set(this.letters, 0, 'BBB'); // ? 響應(yīng)式

實(shí)際應(yīng)用示例

這里是一些實(shí)用的操作示例:

methods: {
    btnClick() {
        // 清空數(shù)組的幾種方式
        this.letters = []; // 方法1:重新賦值(響應(yīng)式)
        this.letters.splice(0); // 方法2:刪除所有元素(響應(yīng)式)
        
        // 刪除部分元素
        const startIndex = 2;
        this.letters.splice(startIndex, this.letters.length - startIndex);
        
        // 批量替換元素
        this.letters.splice(1, 3, 'X', 'Y', 'Z'); // 從索引1開始替換3個(gè)元素
    }
}

掌握Vue中數(shù)組的響應(yīng)式操作方法對(duì)于開發(fā)Vue應(yīng)用至關(guān)重要。記住關(guān)鍵點(diǎn):優(yōu)先使用7大變異方法,避免直接通過索引修改元素,必要時(shí)使用Vue.set()或this.$set()。

希望這份學(xué)習(xí)筆記能幫助你更好地理解和應(yīng)用Vue中的數(shù)組響應(yīng)式特性!

6. 實(shí)際應(yīng)用場(chǎng)景

動(dòng)態(tài)列表渲染

<div id="app">
    <input v-model="newItem" @keyup.enter="addItem">
    <ul>
        <li v-for="(item, index) in items" :key="item.id">
            {{ item.text }}
            <button @click="removeItem(index)">刪除</button>
        </li>
    </ul>
</div>

表格數(shù)據(jù)展示

<table>
    <thead>
        <tr>
            <th>序號(hào)</th>
            <th>姓名</th>
            <th>年齡</th>
        </tr>
    </thead>
    <tbody>
        <tr v-for="(person, index) in persons" :key="person.id">
            <td>{{ index + 1 }}</td>
            <td>{{ person.name }}</td>
            <td>{{ person.age }}</td>
        </tr>
    </tbody>
</table>

7. 注意事項(xiàng)

  1. key的唯一性:確保每個(gè)列表項(xiàng)的key都是唯一的

  2. 數(shù)組更新檢測(cè):對(duì)于非變更方法(如filter、concat),需要重新賦值數(shù)組

  3. 對(duì)象屬性順序:遍歷對(duì)象時(shí),屬性順序不一定是定義時(shí)的順序

  4. 性能考慮:大型列表考慮使用虛擬滾動(dòng)技術(shù)優(yōu)化性能

通過合理運(yùn)用v-for指令及其相關(guān)優(yōu)化技巧,可以構(gòu)建出高效、動(dòng)態(tài)的用戶界面,提升應(yīng)用性能和用戶體驗(yàn)。

到此這篇關(guān)于Vue列表渲染v-for用法完全解析的文章就介紹到這了,更多相關(guān)Vue列表渲染v-for用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-cli3項(xiàng)目打包后自動(dòng)化部署到服務(wù)器的方法

    vue-cli3項(xiàng)目打包后自動(dòng)化部署到服務(wù)器的方法

    這篇文章主要介紹了vue-cli3項(xiàng)目打包后自動(dòng)化部署到服務(wù)器的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Vue computed計(jì)算屬性詳細(xì)講解

    Vue computed計(jì)算屬性詳細(xì)講解

    computed是vue的配置選項(xiàng),它的值是一個(gè)對(duì)象,其中可定義多個(gè)計(jì)算屬性,每個(gè)計(jì)算屬性就是一個(gè)函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計(jì)算屬性computed的詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • Vue3路由跳轉(zhuǎn)并傳遞參數(shù)的應(yīng)用場(chǎng)景分析

    Vue3路由跳轉(zhuǎn)并傳遞參數(shù)的應(yīng)用場(chǎng)景分析

    本文主要介紹在Vue3工程使用setup語(yǔ)法中如何進(jìn)行路由跳轉(zhuǎn)并傳遞參數(shù),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-05-05
  • vue跨窗口通信之新窗口調(diào)用父窗口方法實(shí)例

    vue跨窗口通信之新窗口調(diào)用父窗口方法實(shí)例

    由于開發(fā)需要,我需要在登錄成功請(qǐng)求成功后,調(diào)用父窗口的一個(gè)點(diǎn)擊事件方法,這篇文章主要給大家介紹了關(guān)于vue跨窗口通信之新窗口調(diào)用父窗口的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • vue 計(jì)算屬性和偵聽器的使用小結(jié)

    vue 計(jì)算屬性和偵聽器的使用小結(jié)

    這篇文章主要介紹了vue 計(jì)算屬性和偵聽器的使用小結(jié),幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • vue.js項(xiàng)目打包上線的圖文教程

    vue.js項(xiàng)目打包上線的圖文教程

    下面小編就為大家分享一篇vue.js項(xiàng)目打包上線的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • vue 動(dòng)態(tài)添加/刪除dom元素節(jié)點(diǎn)的操作代碼

    vue 動(dòng)態(tài)添加/刪除dom元素節(jié)點(diǎn)的操作代碼

    這篇文章主要介紹了vue 動(dòng)態(tài)添加/刪除dom元素,需要在點(diǎn)擊添加時(shí),增加一行key/value的輸入框;點(diǎn)擊垃圾桶圖標(biāo)時(shí),刪除對(duì)應(yīng)行,本文結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Vue.js中用v-bind綁定class的注意事項(xiàng)

    Vue.js中用v-bind綁定class的注意事項(xiàng)

    關(guān)于數(shù)據(jù)綁定一個(gè)常見需求就是操作元素的class列表和它的內(nèi)聯(lián)樣式。因?yàn)樗鼈兌际菍傩?,我們可以?v-bind 處理它們,但是使用v-bind綁定class的時(shí)候我們要有一些注意事項(xiàng),下面這篇文章就給大家分享了下要注意的方面,希望能對(duì)大家有所幫助,下面來一起看看吧。
    2016-12-12
  • 了解VUE的render函數(shù)的使用

    了解VUE的render函數(shù)的使用

    本篇文章主要介紹了了解VUE的render函數(shù)的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue如何根據(jù)權(quán)限生成動(dòng)態(tài)路由、導(dǎo)航欄

    vue如何根據(jù)權(quán)限生成動(dòng)態(tài)路由、導(dǎo)航欄

    這篇文章主要介紹了vue如何根據(jù)權(quán)限生成動(dòng)態(tài)路由、導(dǎo)航欄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

台州市| 临西县| 罗田县| 美姑县| 青冈县| 章丘市| 大渡口区| 建始县| 绍兴县| 商河县| 广水市| 县级市| 盐源县| 襄垣县| 广河县| 将乐县| 金堂县| 仁化县| 商丘市| 黑龙江省| 东港市| 张掖市| 商水县| 同江市| 凤翔县| 三门峡市| 朝阳县| 宁强县| 英吉沙县| 阳原县| 龙川县| 彰武县| 江达县| 北海市| 交口县| 泸水县| 舒城县| 宁夏| 通化市| 红原县| 都安|