在vue實際開發中,我們避免不了會使用v-for和v-if來運算元據,但是v-for和v-if同時使用時,有乙個先後執行的優先順序,v-for比v-if的優先順序更高,這就說明在v-for的每次迴圈執行中每一次都會呼叫v-if的判斷,所以不推薦v-if和v-for在同乙個標籤內同時使用
一、理解:
v-for比v-if優先,如果每一次都需要遍歷整個陣列,將會影響速度,尤其是當之需要渲染很小一部分的時候。
如果連用的話會把 v-if 給每個元素都新增一下,會造成效能問題。
一般時候把v-if放在外層,如果不符合就不去執行了。
也可以使用計算屬性computed來代替v-if
二、原理:
const vuetemplatecompiler =
require
('vue-template-compiler');
let r1 = vuetemplatecompiler.
compile
(`hello`)
;// 編譯後
with
(this))
}// 這樣會先迴圈三次,然後給每乙個元素都進行判斷,這樣效能很低
console.
log(r1.render)
;
三.解決
1>ul和li搭配使用,或者是渲染父級標籤下的子標籤,可以使用如下方法:
"state"
>
for=
"(item,id) in list"
:key=
"id"
>
<
/li>
<
/ul>
2>可以使用過濾器將v-if中的判斷轉移到vue的computed的計算屬性中,方法如下:
for=
"(item,id) in formlist"
:key=
"id"
>
<
/li>
<
/ul>
//利用vue的計算屬性,過濾掉不需要的資料,剩下需要的資料再利用v-for迴圈遍歷取出渲染
computed:)}
}
vue中v for和v if不能一起使用
vue中v for和v if不能一起使用 在同一標籤上,v for和v if不能一起使用,因為v for的優先順序大於v if 這時候可以使用computed將資料過濾掉 for item in arr key item.id v if item.isshow h3 div 將isshow為fals...
v for與v if不能同時使用
vue中v for和v if不能同時使用 我們在做列表渲染的時候有時會遇到,我們需要不展示其中的某一項,但是如果我們把v for和v if寫在一起又會出現一些錯誤,因為在vue中v for的優先順序會高於v if 而且如果每一次都需要遍歷整個陣列,將會影響速度,我們平常應該避免這樣的使用,一般我們在...
vue中v for和v if誰先被解析
最近看到乙個比較有意思的問題就是 vue中v for和v if同時在乙個標籤中,瀏覽器解析的時候會先解析v for呢還是v if。為了探明究竟,做了乙個小測試,如下 doctype html en utf 8 x ua compatible content ie edge viewport cont...