前端必知必會(huì)之Vue?v-if指令詳解
Vue v-if 指令
使用 v-if 指令在 Vue 中根據(jù)條件創(chuàng)建 HTML 元素比使用純 JavaScript 要容易得多。
使用 Vue,您只需在要有條件創(chuàng)建的 HTML 元素中直接編寫 if 語句即可。就這么簡(jiǎn)單。
Vue 中的條件渲染
Vue 中的條件渲染是通過使用 v-if、v-else-if 和 v-else 指令完成的。
條件渲染是指僅當(dāng)條件為真時(shí)才創(chuàng)建 HTML 元素,即如果變量為“true”,則創(chuàng)建文本“有貨”,如果變量為“false”,則創(chuàng)建文本“無貨”。
示例
根據(jù)是否有任何打字機(jī)存貨編寫不同的消息:
<p v-if="typewritersInStock"> 有貨 </p> <p v-else> 缺貨 </p>
Vue 中的條件
條件或“if 語句”是真或假的內(nèi)容。
條件通常是兩個(gè)值之間的比較檢查,如上例所示,以查看一個(gè)值是否大于另一個(gè)值。
我們使用比較運(yùn)算符(如 <、>= 或 !==)進(jìn)行此類檢查。
比較檢查還可以與邏輯運(yùn)算符(如 && 或 ||)結(jié)合使用。
我們可以使用存儲(chǔ)中的打字機(jī)數(shù)量和比較檢查來決定它們是否有貨:
示例
使用比較檢查根據(jù)存儲(chǔ)中的打字機(jī)數(shù)量決定是否寫入“有貨”或“缺貨”。
<p v-if="typewriterCount > 0"> 有貨 </p> <p v-else> 缺貨 </p>
條件渲染指令
| 指令 | 詳情 |
|---|---|
| v-if | 可以單獨(dú)使用,也可以與 v-else-if 和/或 v-else 一起使用。如果 v-if 中的條件為“真”,則不考慮 v-else-if 或 v-else。 |
| v-else-if | 必須在 v-if 或另一個(gè) v-else-if 之后使用。如果 v-else-if 中的條件為“真”,則不考慮后面的 v-else-if 或 v-else。 |
| v-else | 如果 if 語句的第一部分為假,則會(huì)發(fā)生此部分。必須放在 if 語句的最末尾,在 v-if 和 v-else-if 之后。 |
要查看包含上述所有三個(gè)指令的示例,我們可以使用 v-else-if 擴(kuò)展前面的示例,以便用戶看到“有貨”、“剩余很少!”或“缺貨”:
示例
使用比較檢查來決定是否根據(jù)存儲(chǔ)中的打字機(jī)數(shù)量寫入“有貨”、“剩余很少!”或“缺貨”。
<p v-if="typewriterCount>3"> 有貨 </p> <p v-else-if="typewriterCount>0"> 剩余很少! </p> <p v-else> 缺貨 </p>
使用函數(shù)的返回值
我們可以使用函數(shù)的“true”或“false”返回值,而不是使用 v-if 指令的比較檢查:
示例
如果某個(gè)文本包含單詞“pizza”,則創(chuàng)建一個(gè)帶有適當(dāng)消息的 <p> 標(biāo)簽。 ‘includes()’ 方法是一種原生 JavaScript 方法,用于檢查文本是否包含某些單詞。
<div id="app">
<p v-if="text.includes('pizza')">文本包含單詞 'pizza'</p>
<p v-else>文本中未找到單詞 'pizza'</p>
</div>
data() {
return {
text: '我喜歡炸玉米餅、披薩、泰式牛肉沙拉、河粉湯和塔吉鍋。'
}
}
上述示例可以擴(kuò)展,以顯示 v-if 還可以創(chuàng)建其他標(biāo)簽,如 <div> 和 <img> 標(biāo)簽:
示例
如果某個(gè)文本包含單詞 ‘pizza’,則創(chuàng)建一個(gè)帶有披薩圖像的 <div> 標(biāo)簽和一個(gè)帶有消息的 <p> 標(biāo)簽。‘includes()’ 方法是一種原生 JavaScript 方法,用于檢查文本是否包含某些單詞。
<div id="app">
<div v-if="text.includes('pizza')">
<p>文本中包含單詞“pizza”</p>
<img src="img_pizza.svg">
</div>
<p v-else>文本中未找到單詞“pizza”</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
text: '我喜歡 taco、披薩、泰式牛肉沙拉、河粉湯和塔吉鍋。'
}
}
})
app.mount('#app')
</script>
下面的示例進(jìn)一步擴(kuò)展。
示例
如果某個(gè)文本包含單詞“pizza”或“burrito”或者不包含這些單詞,則會(huì)創(chuàng)建不同的圖像和文本。
<div id="app">
<div v-if="text.includes('pizza')">
<p>文本中包含單詞“pizza”</p>
<img src="img_pizza.svg">
</div>
<div v-else-if="text.includes('burrito')">
<p>文本中包含單詞“burrito”,但不包含“pizza”</p>
<img src="img_burrito.svg">
</div>
<p v-else>文本中未找到單詞“pizza”或“burrito”</p>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
text: '我喜歡 taco、披薩、泰式牛肉沙拉、越南河粉湯和塔吉鍋。'
}
}
})
app.mount('#app')
</script>
使用 Vue,我們現(xiàn)在可以編寫在特定條件下創(chuàng)建元素的代碼,比使用傳統(tǒng) JavaScript 更容易。
為什么v-for優(yōu)先級(jí)更高?
Vue的設(shè)計(jì)者選擇讓 v-for 的優(yōu)先級(jí)高于 v-if,主要是為了符合直觀的邏輯和性能優(yōu)化的需要:
邏輯直觀:
v-for用于生成列表,而v-if用于條件篩選。先生成列表,再篩選符合條件的項(xiàng),這種順序更符合人類的思維習(xí)慣。性能優(yōu)化:如果先執(zhí)行
v-if,可能會(huì)導(dǎo)致不必要的循環(huán)計(jì)算,因?yàn)?v-if的條件可能依賴于循環(huán)變量,而循環(huán)變量在v-for執(zhí)行后才可用。
總結(jié)
到此這篇關(guān)于前端必知必會(huì)之Vue v-if指令詳解的文章就介紹到這了,更多相關(guān)Vue v-if指令詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue如何實(shí)現(xiàn)自動(dòng)觸發(fā)功能
這篇文章主要介紹了Vue如何實(shí)現(xiàn)自動(dòng)觸發(fā)功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
vue components 動(dòng)態(tài)組件詳解
這篇文章主要介紹了vue components 動(dòng)態(tài)組件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-11-11
vue el-checkbox實(shí)現(xiàn)全選單選方式
這篇文章主要介紹了vue el-checkbox實(shí)現(xiàn)全選單選方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue實(shí)現(xiàn)驗(yàn)證碼登錄的方法實(shí)例
最近在自己寫頁(yè)面,然后寫登錄注冊(cè)UI的時(shí)候需要一個(gè)驗(yàn)證碼組件,去搜一下沒找到什么合適的,于是自己寫一個(gè),這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)驗(yàn)證碼登錄的相關(guān)資料,需要的朋友可以參考下2022-03-03
vue3 Element Plus中icon圖標(biāo)不顯示的解決方案
這篇文章主要介紹了vue3 Element Plus中icon圖標(biāo)不顯示的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
詳解vuelidate 對(duì)于vueJs2.0的驗(yàn)證解決方案
本篇文章主要介紹了vuelidate 對(duì)于vueJs2.0的驗(yàn)證解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03

