国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

零基礎(chǔ)入門Vue之影分身之術(shù)——列表渲染&渲染原理淺析

這篇具有很好參考價值的文章主要介紹了零基礎(chǔ)入門Vue之影分身之術(shù)——列表渲染&渲染原理淺析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

聽我說

從 條件渲染 那一篇,我學(xué)習(xí)到了如何用Vue對dom節(jié)點根據(jù)條件顯示

但單單有條件還不夠啊,有時候數(shù)據(jù)是一大坨一大坨的數(shù)據(jù),如果Vue不提供咱要么使用“v-html” 要么就沒辦法實現(xiàn)

v-html又感覺太low了,Vue提供了另外的指令更好的實現(xiàn),那便是:列表渲染


列表渲染:v-for

簡單的列表渲染可以使用v-for來完成,而Vue提供了兩種采用形式的列表渲染

  • 數(shù)組
  • 對象

列表渲染之數(shù)組

假設(shè)我有一個數(shù)組,然后我希望數(shù)組里面的數(shù)據(jù),通過展示在ul的一個一個li里面,并且要求數(shù)組更新的同時li會自動的增減

假設(shè)data如下

//假設(shè)下面是Vue的配置對象
{
  data:{
    msgList:[
      {
        name:"張三",
        age:19,
        sex:"男"
      },
      {
        name:"李四",
        age:22,
        sex:"男"
      },
      {
        name:"王五",
        age:20,
        sex:"女"
      },
      {
        name:"陳真",
        age:30,
        sex:"男"
      },
    ]
  }
}

那么dom節(jié)點可以這么寫,達到渲染的效果

<!--假設(shè)這是根節(jié)點的內(nèi)容-->
<ul>
  <li v-for="item of msgList">
    {{item.name}} - {{item.age}} - {{item.sex}}
  </li>
</ul>

此時,ul里面的li渲染出的個數(shù)等同于msgList的個數(shù),同時item表示當前l(fā)i的數(shù)組元素

可以用JavaScript的for-of循環(huán)來理解,這里用v-for="item in msgList"也是一樣的效果

item都是表示msgList的成員

完整代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="root">
        <ul>
            <li v-for="item of msgList">
              {{item.name}} - {{item.age}} - {{item.sex}}
            </li>
        </ul>
    </div>
</body>
<script>
    let vm = new Vue({
        el:"#root",
        data:{
            msgList:[{
                name:"張三",
                age:19,
                sex:"男"
            },
            {
                name:"李四",
                age:22,
                sex:"男"
            },
            {
                name:"王五",
                age:20,
                sex:"女"
            },
            {
                name:"陳真",
                age:30,
                sex:"男"
            }]
        }
    })
</script>
</html>

列表渲染之對象

Vue還允許配置為對象這種可遍歷的變量來使用v-for

如果配置為對象的話,那么會拿到兩個參數(shù),一個是key一個是value(先拿到value在拿到key

具體代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="root">
        <ul>
            <li v-for="(value,key) of msgObj">
              {{key}} - {{value}}
            </li>
        </ul>
    </div>
</body>
<script>
    let vm = new Vue({
        el:"#root",
        data:{
            msgObj:{
                name:"陳真",
                age:30,
                sex:"男"
            }
        }
    })
</script>
</html>

當然也可以寫一個參數(shù),只接受value

<div id="root">
    <ul>
        <li v-for="value of msgObj">
          {{value}}
        </li>
    </ul>
</div>

完全寫法

無論是對象還是數(shù)組,列表渲染都會給當前值索引,所以對于數(shù)組的話就可以寫成兩個參數(shù),顯示value后是索引

<ul>
    <li v-for="(item,index) of msgList">
      {{index}}、{{item.name}} - {{item.age}} - {{item.sex}}
    </li>
</ul>

如何使對象的話就這么寫

<ul>
    <li v-for="(value,key,index) of msgObj">
      {{index}}、{{key}} = {{value}}
    </li>
</ul>

key的應(yīng)用&渲染原理淺析

為了避免出錯,無論是react還是vue使用v-for,原則上都應(yīng)該配置唯一標識作為key

當出現(xiàn)要對數(shù)據(jù)修改時,未配置唯一標識key可能會出現(xiàn)bug

因此對于需要用上v-for的節(jié)點請配置上數(shù)據(jù)唯一標識作為key

詳細解釋請參照:維護狀態(tài)


淺析出錯原因

Vue在監(jiān)控到數(shù)據(jù)改變時,并不會如我們所想的一樣馬上渲染dom

而是會先渲染虛擬dom,然后通過特定算法或者說特定規(guī)則去渲染實際dom

渲染規(guī)則如下:

  • 當遇到v-for時,首先尋找數(shù)據(jù)老的虛擬dom和新的虛擬dom的唯一標識進行對比(以li為例)
  • 在li節(jié)點中,如果有一樣的部分那么照搬老的dom,不重新渲染,直接搬運反之根據(jù)新的虛擬dom重新渲染
  • 如果li中這個節(jié)點在舊虛擬dom不存在,那么久會按照新的虛擬dom重新渲染

不放圖片說不清楚,放圖片說一大堆,搬出尚硅谷的視頻吧:零基礎(chǔ)入門Vue之key的作用和原理


key的具體用法

key 的特殊 attribute 主要用在 Vue 的虛擬 DOM 算法,在新舊 nodes 對比時辨識 VNodes。如果不使用 key,Vue 會使用一種最大限度減少動態(tài)元素并且盡可能的嘗試就地修改/復(fù)用相同類型元素的算法。而使用 key 時,它會基于 key 的變化重新排列元素順序,并且會移除 key 不存在的元素。

對于 Vue中的key 的用法也很簡單,他是為了標識v-for每個循環(huán)元素的唯一性,所以key也應(yīng)該是唯一的

寫法如下

<dom v-for="item in list" :key="item.id"></dom>

此時,當前dom與數(shù)據(jù)唯一的id互相綁定,這樣如果dom更新了,新舊虛擬dom就能一一對應(yīng)的去對比

就不會出現(xiàn)元素紊亂,并且渲染效率低下的問題

具體代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="root">
        <ul>
            <li v-for="item of msgList" :key="item.id">
              {{item.name}} - {{item.age}} - {{item.sex}}
            </li>
        </ul>
    </div>
</body>
<script>
    let vm = new Vue({
        el:"#root",
        data:{
            msgList:[{
                id:1,
                name:"張三",
                age:19,
                sex:"男"
            },
            {
                id:2,
                name:"李四",
                age:22,
                sex:"男"
            },
            {
                id:3,
                name:"王五",
                age:20,
                sex:"女"
            },
            {
                id:4,
                name:"陳真",
                age:30,
                sex:"男"
            }]
        }
    })
</script>
</html>

注:切忌把索引作為key,因為只要不是往末尾插入數(shù)據(jù)或者刪除數(shù)據(jù)的方式來修改數(shù)據(jù),都會造成index失去唯一標識的作用


The End

本片完~


下一篇:零基礎(chǔ)入門Vue之畫龍點睛——再探監(jiān)測數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-825140.html

到了這里,關(guān)于零基礎(chǔ)入門Vue之影分身之術(shù)——列表渲染&渲染原理淺析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Vue3】2-8 : 條件渲染與列表渲染及注意點

    【Vue3】2-8 : 條件渲染與列表渲染及注意點

    一、條件渲染 -?v-if = 表達式 1.1 真值與假值 1.2 ?v-if ,v-else-if?,v-else 1.3 ?實戰(zhàn):isShow1 為真值時 顯示 bbbbb >??代碼 >??效果 二、列表渲染 -?v-for 2.1 渲染 - 數(shù)組 >??代碼 >??效果 2.2 渲染 - 對象 >??代碼 >??效果 2.3 渲染 - 整數(shù) ?>??代碼 >??效果 2.3 渲染 - 文本

    2024年02月02日
    瀏覽(12)
  • 【前端知識】React 基礎(chǔ)鞏固(十三)——列表渲染

    在 React 中沒有像 Vue 模塊語法中的 v-for 指令,而是需要我們通過 JS 代碼的方式組織數(shù)據(jù),轉(zhuǎn)成 JSX 在 React 中,展示列表最多的方式就是使用數(shù)組的 map 高階函數(shù) 在展示數(shù)組前,有時會進行一些處理 過濾一些內(nèi)容(filter 函數(shù)) 截取數(shù)組中的一部分內(nèi)容(slice 函數(shù)) 列表中的

    2024年02月10日
    瀏覽(31)
  • Vue2 第五節(jié) class與style綁定,條件渲染和列表渲染

    Vue2 第五節(jié) class與style綁定,條件渲染和列表渲染

    1.class與style綁定 2.條件渲染 3.列表渲染 (1)綁定class 就是用v-bind綁定一個class 有三種不同的寫法 1. 字符串寫法:適用于樣式的類名不確定,需要動態(tài)指定 ? ?2.數(shù)組寫法:適用于要綁定的個數(shù)個名字都不確定,數(shù)組中的樣式連同class里面有的樣式都會綁定到div中 ? ?3. 對象寫

    2024年02月15日
    瀏覽(23)
  • Vue-16、Vue列表渲染(v-for的使用)

    Vue-16、Vue列表渲染(v-for的使用)

    1、vue遍歷數(shù)組 也可以這樣寫 2、遍歷對象

    2024年01月21日
    瀏覽(35)
  • FE_Vue學(xué)習(xí)筆記 條件渲染[v-show v-if] & 列表渲染[v-for] 列表過濾 列表排序

    FE_Vue學(xué)習(xí)筆記 條件渲染[v-show v-if] & 列表渲染[v-for] 列表過濾 列表排序

    使用template可以使其里面的內(nèi)容在html的結(jié)構(gòu)中不變。條件渲染: v-if 1)v-if=“表達式” 2)v-else-if=“表達式” 3)v-else {} 適用于:切換頻率較低的場景。特點:不展示的DOM元素直接被移除。注意:v-if可以和v-else-if、v-else一起使用,但要求結(jié)構(gòu)不能被“打斷”。 v-show 寫法:

    2024年02月05日
    瀏覽(18)
  • vue3【列表渲染】v-for 詳細介紹(vue中的“循環(huán)”)

    vue3【列表渲染】v-for 詳細介紹(vue中的“循環(huán)”)

    在本文之前已經(jīng)有文章簡單概要介紹過vue中的渲染,點擊幫你快速復(fù)習(xí)????,包括 條件渲染 和 列表渲染 。 二者同樣重要,但是 對于項目而言,使用更多的是列表渲染,主要表現(xiàn)為“循環(huán)”。 下面讓我們繼續(xù)深入地了解列表渲染的相關(guān)內(nèi)容吧~?????? 我們可以使用 v-f

    2024年02月22日
    瀏覽(25)
  • 微信小程序和 Vue 中的遍歷循環(huán)和列表渲染有一些區(qū)別。

    在微信小程序中,我們可以使用 wx:for 指令來進行遍歷循環(huán),例如: 這里的 items 是一個數(shù)組,wx:for 指令會遍歷這個數(shù)組,并將數(shù)組中的每個元素賦值給 item 變量,然后在模板中使用 {{item}} 來顯示每個元素的值。wx:key 屬性用于指定每個元素的唯一標識符,以便在更新列表時能

    2024年02月09日
    瀏覽(19)
  • 已解決:Vue改變數(shù)據(jù)后界面不自動渲染,Vue中使用v-for遍歷對象數(shù)組,當給其中某個元素對象重新賦值之后,頁面組件列表沒有渲染更新。

    問題如標題所說,Vue中使用v-for遍歷對象數(shù)組,當給數(shù)組其中某個元素對象重新賦值之后,頁面組件列表沒有及時更新渲染,而是在頁面進行了其他的渲染操作以后列表才更新出來新的數(shù)據(jù),那同樣給對象內(nèi)的屬性值賦值也可能存在不渲染的情況,一并解決,尤其發(fā)生在網(wǎng)絡(luò)

    2024年02月06日
    瀏覽(21)
  • 瀏覽器基礎(chǔ)原理-安全: 渲染進程-安全沙盒

    由于渲染進程需要執(zhí)行 DOM 解析、CSS 解析、網(wǎng)絡(luò)圖片解碼等操作,如果渲染進程中存在系統(tǒng)級別的漏洞,那么以上操作就有可能讓惡意的站點獲取到渲染進程的控制權(quán)限,進而又獲取操作系統(tǒng)的控制權(quán)限,這對于用戶來說是非常危險的。所以我們需要引入安全沙盒。 安全沙盒

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包