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

Vue條件渲染與循環(huán)渲染實(shí)戰(zhàn)詳解

 更新時(shí)間:2026年03月23日 10:03:10   作者:霍理迪  
這篇文章給大家介紹Vue條件渲染與循環(huán)渲染的相關(guān)知識(shí),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

v-if指令

v-if指令的值:true/false,可以控制標(biāo)簽是否渲染

    <div v-if="true">我出來了</div>
    <div v-if="false">我不出去</div>

v-if v-else-if v-else指令

類似我們之前學(xué)的if else語句,這里也是一樣的

    溫度:<input type="number" v-model="temprature" /><br /><br />
      天氣:
      <span v-if="temprature<=5">寒冷</span>
      <span v-else-if="temprature>5&&temprature<25">涼爽</span>
      <span v-else>炎熱</span>
      <hr />

template標(biāo)簽

 template標(biāo)簽/元素只是起到占位的作用,不會(huì)真正的出現(xiàn)在頁面上,也不會(huì)影響頁面的結(jié)構(gòu)。

需求:同時(shí)控制以下3個(gè)標(biāo)題一起出現(xiàn)或者隱藏

    <template v-if="true">
        <h2>六下匹,人當(dāng)送,內(nèi)。</h2>
        <h3>六下匹,人當(dāng)送,內(nèi)。</h3>
        <h4>六下匹,人當(dāng)送,內(nèi)。</h4>
      </template>

v-show指令

和if類似同樣是控制是否顯示,指令的值:true/false

v-if和v-show應(yīng)該如何選擇?

 v-show指令是通過修改元素的CSS樣式的display屬性來達(dá)到顯示和隱藏的。

                1. 如果一個(gè)元素在頁面上被頻繁的隱藏和顯示,建議使用v-show,因?yàn)榇藭r(shí)使用v-if開銷比較大。

                2. v-if的優(yōu)點(diǎn):頁面加載速度快,提高了頁面的渲染效率。

                3、v-show 不支持在 <template> 元素上使用,也不能和 v-else 搭配使用。

v-for

語法格式:v-for指令。該指令用在被遍歷的標(biāo)簽上

v-for="(element, index) in elements" :key="element.id"

或者

v-for="(element, index) of elements" :key="element.id"

遍歷對(duì)象

  <h2>遍歷對(duì)象的屬性</h2>
  <ul>
    <li v-for="(value, propertyName) of user">{{propertyName}},{{value}}</li>
  </ul>
  <hr />

遍歷字符串

  <h2>遍歷字符串</h2>
  <ul>
    <li v-for="(c,index) of str">{{index}},{{c}}</li>
  </ul>
  <hr />

遍歷指定次數(shù)

  <h2>遍歷指定的次數(shù)</h2>
    <ul>
      <li v-for="(num,index) of 10">{{index}}, {{num}}</li>
    </ul>
    <hr />

遍歷數(shù)組

 <h2>遍歷數(shù)組</h2>
      <!-- 靜態(tài)列表 -->
      <ul>
        <li>張三</li>
        <li>李四</li>
        <li>王五</li>
      </ul>
      <!-- 動(dòng)態(tài)列表 -->
      <ul>
        <!-- 
                1. v-for要寫在循環(huán)項(xiàng)上。
                2. v-for的語法規(guī)則:
                    v-for="(變量名,index) in/of 數(shù)組"
                    變量名 代表了 數(shù)組中的每一個(gè)元素
             -->
        <li v-for="(name,index) of names">{{name}}-{{index}}</li>
      </ul>
      <table>
        <tr>
          <th>序號(hào)</th>
          <th>會(huì)員名</th>
          <th>年齡</th>
          <th>選擇</th>
        </tr>
        <tr v-for="(vip,index) in vips">
          <td>{{index+1}}</td>
          <td>{{vip.name}}</td>
          <td>{{vip.age}}</td>
          <td><input type="checkbox" /></td>
        </tr>
      </table>

虛擬DOM和diff算法

虛擬DOM:在內(nèi)存中的dom對(duì)象

diff算法:是一種能夠快速的比較出兩個(gè)事物不同之處的算法

v-for指令所在的標(biāo)簽中,還有一個(gè)非常重要的屬性::key

如果沒有指定 :key 屬性,會(huì)自動(dòng)拿index作為key。這個(gè)key是這個(gè)dom元素的身份證號(hào)/唯一標(biāo)識(shí)。

虛擬DOM中key的作用(diff到底是怎么做對(duì)比?)

key是虛擬DOM中對(duì)象的標(biāo)識(shí),當(dāng)數(shù)據(jù)發(fā)生變化時(shí),Vue會(huì)根據(jù)新數(shù)據(jù)生成新的虛擬DOM,隨后Vue進(jìn)行新虛擬DOM與舊虛擬DOM的差異比較,比較規(guī)則如下

a:舊虛擬DOM中找到與新虛擬DOM中相同的key

若虛擬DOM中內(nèi)容沒變,直接使用之前的真實(shí)DOM

若虛擬DOM中內(nèi)容變了,則生成新的真實(shí)DOM,隨后替換掉頁面中之前的真實(shí)DOM

b:舊虛擬DOM中未找到與新虛擬DOM相同的key,則直接創(chuàng)建新的真實(shí)DOM,隨后渲染到頁面

用index作為key會(huì)引發(fā)的問題

 第一個(gè)問題:效率低。
第二個(gè)問題:非常嚴(yán)重了。產(chǎn)生了錯(cuò)亂。尤其是對(duì)數(shù)組當(dāng)中的某些元素進(jìn)行操作。(非末尾元素。)

<body>
  <div id="app">
    <h1>{{msg}}</h1>
    <table>
      <tr>
        <th>序號(hào)</th>
        <th>英雄</th>
        <th>能量值</th>
        <th>選擇</th>
      </tr>
      <!-- 這種寫法會(huì)出現(xiàn)錯(cuò)亂 -->
      <tr v-for="(hero,index) in heros" :key="index">
        <td>{{index+1}}</td>
        <td>{{hero.name}}</td>
        <td>{{hero.power}}</td>
        <td><input type="checkbox" /></td>
      </tr>
      <!-- 使用id則不會(huì) -->
      <tr v-for="(hero,index) in heros" :key="hero.id">
        <td>{{index+1}}</td>
        <td>{{hero.name}}</td>
        <td>{{hero.power}}</td>
        <td><input type="checkbox"></td>
      </tr>
    </table>
    <button @click="add">添加英雄麥文</button>
  </div>
  <script>
    const vm = new Vue({
      el: "#app",
      data() {
        return {
          msg: "虛擬dom與diff算法",
          heros: [
            { id: "101", name: "艾格文", power: 10000 },
            { id: "102", name: "麥迪文", power: 9000 },
            { id: "103", name: "古爾丹", power: 8000 },
            { id: "104", name: "薩爾", power: 6000 },
            // { id: "105", name: "麥文", power: 9100 }
          ],
        };
      },
      methods: {
        add() {
          let obj = { id: "105", name: "麥文", power: 9100 };
          this.heros.unshift(obj);
        },
      },
    });
  </script>
</body>

到此這篇關(guān)于Vue條件渲染與循環(huán)渲染實(shí)戰(zhàn)詳解的文章就介紹到這了,更多相關(guān)vue條件渲染與循環(huán)渲染內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

腾冲县| 成安县| 安远县| 广德县| 色达县| 察雅县| 修文县| 巴青县| 永德县| 资中县| 石首市| 潮安县| 湄潭县| 许昌市| 衡南县| 鹤庆县| 安陆市| 津市市| 祁门县| 中山市| 黑河市| 铜川市| 南部县| 乳山市| 措勤县| 大田县| 溧水县| 丁青县| 温州市| 奉节县| 馆陶县| 建宁县| 磴口县| 龙山县| 安康市| 锡林浩特市| 皮山县| 洛扎县| 盘锦市| 永泰县| 屯昌县|