欧美xxxx做受欧美_www.xxxx精品_国产一区二区三区蝌蚪_国产原创欧美精品_国产福利精品一区_亚洲精品久久久久久下一站 _久久精品国产网站_久久99精品国产_久久综合给合久久狠狠狠97色69_91久久久久久久久久久

vue中v-if和v-for的區別是什么

來源:php中文網 | 2022-12-27 19:05:25 |

本教程操作環境:windows7系統、vue3版,DELL G3電腦。

首先在官方文檔中明確指出v-for和v-if不建議一起使用。

一、v-if和v-for的作用

v-if 指令用于條件性地渲染一塊內容。這塊內容只會在指令的表達式返回 true值的時候被渲染。


(相關資料圖)

v-for 指令基于一個數組來渲染一個列表。v-for 指令需要使用 item in items形式的特殊語法,其中 items 是源數據數組或者對象,而 item 則是被迭代的數組元素的別名。

在 v-for 的時候,建議設置key值,并且保證每個key值是獨一無二的,這便于diff算法進行優化。

兩者在用法上區別如下:

<div v-if="isShow" >123</div>  <li v-for="item in items" :key="item.id">  {{ item.label }}</li>

二、兩者的優先級

在使用中,v-for優先級比v-if高

v-if與v-for都是vue模板系統中的指令

在vue模板編譯的時候,會將指令系統轉化成可執行的render函數

示例 編寫一個p標簽,同時使用v-if與 v-for

<div id="app">  <p v-if="isShow" v-for="item in items">    {{ item.title }}  </p></div>

創建vue實例,存放isShow與items數據

const app = new Vue({ el: "#app", data() {  return {   items: [    { title: "foo" },    { title: "baz" }]  } }, computed: {  isShow() {   return this.items && this.items.length > 0  } }})

模板指令的代碼都會生成在render函數中,通過app.$options.render就能得到渲染函數

? anonymous() { with (this) { return  _c("div", { attrs: { "id": "app" } },   _l((items), function (item) { return (isShow) ? _c("p", [_v("\n" + _s(item.title) + "\n")]) : _e() }), 0) }}

_l是vue的列表渲染函數,函數內部都會進行一次if判斷 初步得到結論:v-for優先級是比v-if高

然后再將v-for與v-if置于不同標簽

<div id="app">  <template v-if="isShow">    <p v-for="item in items">{{item.title}}</p>  </template></div>

再輸出下render函數

? anonymous() { with(this){return  _c("div",{attrs:{"id":"app"}},  [(isShow)?[_v("\n"),  _l((items),function(item){return _c("p",[_v(_s(item.title))])})]:_e()],2)}}

這時候我們可以看到,v-for與v-if作用在不同標簽時候,是先進行判斷,再進行列表的渲染

我們再在查看下vue源碼 源碼位置:\vue-dev\src\compiler\codegen\index.js

export function genElement (el: ASTElement, state: CodegenState): string { if (el.parent) {  el.pre = el.pre || el.parent.pre } if (el.staticRoot && !el.staticProcessed) {  return genStatic(el, state) } else if (el.once && !el.onceProcessed) {  return genOnce(el, state) } else if (el.for && !el.forProcessed) {  return genFor(el, state) } else if (el.if && !el.ifProcessed) {  return genIf(el, state) } else if (el.tag === "template" && !el.slotTarget && !state.pre) {  return genChildren(el, state) || "void 0" } else if (el.tag === "slot") {  return genSlot(el, state) } else {  // component or element  ...}

在進行if判斷的時候,v-for是比v-if先進行判斷

最終判斷結果是v-for的優先級高于v-if的

三、注意事項

永遠不要把 v-if 和 v-for 同時用在同一個元素上,帶來性能方面的浪費(每次渲染都會先循環再進行條件判斷)

如果避免出現這種情況,則在外層嵌套template(頁面渲染不生成dom節點),在這一層進行v-if判斷,然后在內部進行v-for循環

<template v-if="isShow">  <p v-for="item in items"></template>

如果條件出現在循環內部,可通過計算屬性computed提前過濾掉那些不需要顯示的項

computed: {  items: function() {   return this.list.filter(function (item) {    return item.isShow   })  }}

案列說明:

原因:v-for比v-if優先級高,每一次都需要遍歷整個數組,造成不必要的計算,影響性能.

例如,使用v-for在頁面中循環100個li標簽,但是只顯示index=97的那個li標簽內容,其余的全部隱藏。 即使100個list中只需要使用一個數據,它也會循環整個數組。

<ul>    <li v-for="item in list" v-if="item.actived">{{item.name}}</li> </ul>

解決:使用computed

<ul>    <li v-for="item in activeList">{{item.name}}</li></ul>computed: {  activeList() {    return this.list.filter(val => {      return val.actived;    });  }},

以上就是vue中v-if和v-for的區別是什么的詳細內容,更多請關注php中文網其它相關文章!

關鍵詞: vue3 v-if v-for

欧美xxxx做受欧美_www.xxxx精品_国产一区二区三区蝌蚪_国产原创欧美精品_国产福利精品一区_亚洲精品久久久久久下一站 _久久精品国产网站_久久99精品国产_久久综合给合久久狠狠狠97色69_91久久久久久久久久久
国产精品美女久久久久久久久久久| 一区二区三区在线免费| 欧美日韩国产小视频在线观看| 欧美大片在线观看| 污片在线观看一区二区| www.欧美.com| 中文字幕亚洲区| 91麻豆免费看| 一区二区三区在线免费视频| 97久久超碰国产精品电影| 亚洲人一二三区| 99re这里都是精品| 亚洲欧美视频在线观看| 91片在线免费观看| 三级不卡在线观看| 日韩视频不卡中文| 风流少妇一区二区| 一区二区三区欧美亚洲| 欧美男人的天堂一二区| 六月丁香婷婷久久| 国产精品久久久久影院| 欧美影院一区二区三区| 蜜桃av一区二区在线观看 | 国产高清一区日本| 欧美激情一区三区| 欧美视频中文一区二区三区在线观看| 亚洲丰满少妇videoshd| 久久一二三国产| 一本在线高清不卡dvd| 丝袜诱惑亚洲看片| 亚洲欧洲美洲综合色网| 欧美精品一二三| 成人一区二区三区视频在线观看| 亚洲国产欧美在线人成| 国产亚洲精品aa午夜观看| 欧美三级日韩三级| 不卡视频在线观看| 精品亚洲成a人| 午夜国产不卡在线观看视频| 国产亚洲精品aa午夜观看| 欧美高清hd18日本| 91九色最新地址| 97成人超碰视| 成人国产电影网| 激情小说亚洲一区| 日本亚洲免费观看| 天堂va蜜桃一区二区三区漫画版| 亚洲柠檬福利资源导航| 国产精品网曝门| 日本一区二区三区电影| 久久亚洲一区二区三区明星换脸| 欧美一区二区三区精品| 欧美日韩高清一区二区不卡| 色综合视频在线观看| 97se亚洲国产综合在线| 99久久精品情趣| 国产91丝袜在线观看| 国产精品一二三区| 激情五月激情综合网| 久久99国产精品久久| 激情综合网天天干| 国产一区三区三区| 国产成人小视频| 成人av网在线| 在线视频欧美区| 欧美日韩国产欧美日美国产精品| 欧日韩精品视频| 欧美欧美欧美欧美| 精品国产乱码久久久久久久 | 风间由美一区二区三区在线观看 | 99免费精品在线| 99精品视频在线观看免费| 一本色道**综合亚洲精品蜜桃冫| 欧美亚洲动漫制服丝袜| 91精品麻豆日日躁夜夜躁| 精品国产a毛片| 日本一区二区三区dvd视频在线| 最近日韩中文字幕| 日韩中文字幕亚洲一区二区va在线 | 日日夜夜精品视频天天综合网| 亚洲永久免费av| 麻豆精品一区二区综合av| 国产成人亚洲综合a∨婷婷| 色香蕉成人二区免费| 欧美视频一区二区| 久久婷婷国产综合国色天香 | 日韩1区2区3区| 国产九九视频一区二区三区| 91国偷自产一区二区三区观看| 欧美男男青年gay1069videost| 精品日韩在线观看| 中文字幕一区二区三区色视频 | 久久久久久久久久久久电影| 亚洲欧洲av另类| 久久成人久久爱| 一本一道久久a久久精品| 欧美精品一区二区三区四区| 亚洲欧美日韩成人高清在线一区| 免费看欧美女人艹b| 99精品久久只有精品| 精品久久久久av影院| 香蕉成人伊视频在线观看| 国产不卡视频在线观看| 欧美一区二区精品在线| 一区二区三区电影在线播| 黄一区二区三区| 6080国产精品一区二区| 亚洲精品日日夜夜| 成人黄色a**站在线观看| 欧美电影免费观看高清完整版在线| 亚洲精品视频免费观看| 99精品一区二区三区| 国产欧美精品日韩区二区麻豆天美| 日本美女一区二区三区视频| 欧美性色综合网| 亚洲国产精品综合小说图片区| 一本到三区不卡视频| 亚洲欧美成人一区二区三区| 国产精品99久久久久久宅男| 精品国产乱码久久久久久久久| 裸体歌舞表演一区二区| 久久蜜臀中文字幕| 成人天堂资源www在线| 亚洲欧洲精品一区二区三区| 在线观看一区二区视频| 午夜久久久影院| 精品日韩成人av| 国产91精品欧美| 亚洲女与黑人做爰| 精品视频一区二区不卡| 六月丁香婷婷久久| www国产精品av| 99久久国产综合精品色伊| 亚洲一区二区三区四区中文字幕| 欧日韩精品视频| 老司机精品视频线观看86| 久久精品一二三| 在线观看亚洲精品| 久88久久88久久久| 亚洲欧洲美洲综合色网| 91精品免费在线| 92精品国产成人观看免费| 日日夜夜一区二区| 中文字幕日韩一区二区| 7777精品伊人久久久大香线蕉经典版下载| 免费久久99精品国产| 国产精品毛片无遮挡高清| 3d动漫精品啪啪一区二区竹菊 | 国产精品污污网站在线观看| 欧美三级蜜桃2在线观看| 国产一区二区在线电影| 亚洲午夜国产一区99re久久| 久久奇米777| 欧美理论片在线| 99久久国产综合精品女不卡| 久久99国内精品| 亚洲一区电影777| 国产精品久久久久精k8| 精品久久久三级丝袜| 欧美色倩网站大全免费| 99re这里都是精品| 国产精品羞羞答答xxdd| 免费看欧美女人艹b| 亚洲www啪成人一区二区麻豆| 中文字幕一区在线| 欧美国产视频在线| 久久亚洲精品小早川怜子| 欧美美女一区二区三区| 在线观看一区不卡| 94-欧美-setu| 99国产精品久久久| 99久久精品情趣| 97se亚洲国产综合自在线| 成人av在线播放网址| 国产美女一区二区三区| 国产高清无密码一区二区三区| 国产精品亚洲成人| 成人性色生活片| 成人sese在线| 91黄色免费版| 欧美亚洲禁片免费| 欧美体内she精高潮| 欧美日韩在线一区二区| 欧美精品在线一区二区| 日韩一级片网站| 久久理论电影网| 国产欧美精品一区aⅴ影院 | 亚洲资源在线观看| 舔着乳尖日韩一区| 乱一区二区av| 成人黄色免费短视频| 色婷婷亚洲婷婷| 欧美一区午夜精品| 久久久www免费人成精品| 国产精品私人自拍| 亚洲午夜一区二区三区| 久久精品国内一区二区三区| 成人涩涩免费视频| 欧美一区二区三级| 中文字幕中文在线不卡住|