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

Vue的條件判斷問(wèn)題及說(shuō)明

 更新時(shí)間:2026年05月18日 16:59:11   作者:落雪小軒韓  
文章主要介紹了Vue中的v-if、v-else-if和v-else的等這三種指令的使用方法和場(chǎng)景,還對(duì)比了v-if和v-show的區(qū)別,并提供了實(shí)際開(kāi)發(fā)中選擇v-if或v-show的的建議

Vue的條件判斷

?1.vue的條件判斷:

  • v-if、v-else-if、v-else,這三個(gè)指令與JS的條件語(yǔ)句if、else、else if類似。
  • Vue的條件指令可以根據(jù)表達(dá)式的值在DOM中渲染或銷毀元素或組件。

2.指令v-if:可以用v-if指令的條件(判斷)值來(lái)決定DOM的元素是否渲染出來(lái);

3.使用方法:v-if="表達(dá)式"

<div id="app">
    <!-- 條件為true時(shí),將message渲染出來(lái),條件為false時(shí),不渲染出來(lái) -->
	<h2 v-if="true">{{message}}</h2>
	<h2 v-if="false">{{message}}</h2>
	<!-- 用data中的自定義數(shù)據(jù)show作為條件,則可以動(dòng)態(tài)修改條件 -->
	<h2 v-if="isShow">{{message}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
    el: "#app",
    data: {
        message: '你好??!',
        isShow: true
    }
})
</script>

v-if和v-else的結(jié)合使用

  • ?v-if:當(dāng)表達(dá)式條件滿足時(shí),顯示該指令元素里面的內(nèi)容;
  • v-else : 否則表達(dá)式條件不滿足,顯示該指令元素里面的內(nèi)容;

注意:

v-else 元素必須緊跟在帶 v-if 或者 v-else-if 的元素的后面,否則它將不會(huì)被識(shí)別。

<div id="app">
	<h2 v-if="isShow">{{message}}</h2>
	<h1 v-else>isShow為false時(shí)顯示我</h1>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
    el: "#app",
    data: {
        message: '你好??!',
        isShow: true
    }
})
</script>

v-if、v-else和v-else-if的結(jié)合使用

  • ?v-if:條件滿足,顯示該元素里面的內(nèi)容。
  • v-else-if:若v-if中條件不滿足,則看v-else-if中條件是否滿足,滿足則顯示該元素里面的內(nèi)容。類似于 v-else,v-else-if 也必須緊跟在帶 v-if 或者 v-else-if 的元素之后。
  • v-else:若都不滿足,則改元素中內(nèi)容。
<div id="app">
	<h2 v-if="score>=90">優(yōu)秀</h2>
	<h2 v-else-if="score>=80">良好</h2>
	<h2 v-else-if="score>=60">及格</h2>
	<h2 v-else>不及格</h2>
	
	 <!-- 	邏輯較多時(shí),可以直接用計(jì)算屬性來(lái)做 -->
	<h1>{{result}}</h1>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
	el: "#app",
	data: {
	    score: 99
	},
	computed: {
	    result() {
	        let showMessage = ''
	        if (this.score >= 90) {
	            showMessage = '優(yōu)秀'
	        } else if (this.score >= 80) {
	            showMessage = '良好'
	        } else if (this.score >= 60) {
	            showMessage = '及格'
	        } else {
	            showMessage = '不及格'
	        }
	        return showMessage
	   }
	}
})
</script>

用戶登錄切換的小案例

<div id="app">
	<span v-if="isUser">
		<label for="username">用戶賬號(hào)</label>
		<input type="text" id="username" placeholder="用戶賬號(hào)" key="username">
	</span>
	<span v-else>
		<label for="email">用戶郵箱</label>
		<input type="text" id="email" placeholder="用戶郵箱" key="email">
	</span>
	<button @click="isUser=!isUser">切換類型</button>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
	el: "#app",
	data: {
	    isUser: true
	}
})
</script>

?問(wèn)題:

  • 如果我們?cè)谟休斎雰?nèi)容的情況下切換了類型,我們會(huì)發(fā)現(xiàn)文字依然顯示之前的輸入的內(nèi)容。
  • 但是按道理講,我們應(yīng)該切換到另外一個(gè)input元素中了,
  • 在另一個(gè)input元素中,我們并沒(méi)有輸入內(nèi)容。

為什么會(huì)出現(xiàn)這個(gè)問(wèn)題呢?

  • 這是因?yàn)閂ue在進(jìn)行DOM渲染時(shí),出于性能考慮,會(huì)會(huì)盡可能高效地渲染元素,
  • 通常會(huì)復(fù)用已有元素而不是從頭開(kāi)始渲染
  • 也就是說(shuō): Vue內(nèi)部會(huì)發(fā)現(xiàn)原來(lái)的input元素不再使用,直接作為else中的input來(lái)使用了

解決方案:

  • 如果我們不希望Vue出現(xiàn)類似重復(fù)利用的問(wèn)題,就要通過(guò)方式來(lái)表達(dá)這兩個(gè)元素是完全獨(dú)立的,
  • 不要復(fù)用它們可以給對(duì)應(yīng)的input添加key屬性
  • 并且我們需要保證不同input中key屬性的屬性值不同,這樣就不會(huì)被復(fù)用,而是重新創(chuàng)建。

v-show的使用

?1.v-show的使用:

v-show的用法和v-if非常相似,都是決定一個(gè)元素是否渲染:

2.v-if和v-show對(duì)比:

*當(dāng)條件為true時(shí):

  • v-if和v-show都可以將元素渲染,顯示出來(lái)。

*當(dāng)條件為false時(shí):

  • v-if不會(huì)顯示元素,原因:包含v-if指令的元素根本不會(huì)存在DOM中
  • v-show不會(huì)顯示元素,原因:因?yàn)樗o該元素設(shè)置了一個(gè)行內(nèi)樣式 display:none
  • 但它始終會(huì)被渲染并保留在 DOM 中
  • v-if 是“真正”的條件渲染,因?yàn)樗鼤?huì)確保在切換過(guò)程中條件塊內(nèi)的事件監(jiān)聽(tīng)器和子組件適當(dāng)?shù)乇讳N毀和重建。
  • 它也是惰性的:如果在初始渲染時(shí)條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r(shí),才會(huì)開(kāi)始渲染條件塊。
  • v-show 就簡(jiǎn)單得多,不管初始條件是什么,元素總是會(huì)被渲染,并且只是簡(jiǎn)單地基于 CSS 進(jìn)行切換。

3.開(kāi)發(fā)中選擇用v-show還是v-if?

當(dāng)需要在顯示與隱藏之間切換很頻繁時(shí),使用v-show

當(dāng)只有一次切換時(shí),使用v-if

 <div id="app">
	<h2 v-if="isShow" id="aaa">{{message}}</h2>
	<h2 v-show="isShow" id="bbb">{{message}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: "#app",
        data: {
            message: '你好?。?,
            isShow: true
        }
    })
</script>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue純前端如何實(shí)現(xiàn)導(dǎo)出簡(jiǎn)單Excel表格的功能

    Vue純前端如何實(shí)現(xiàn)導(dǎo)出簡(jiǎn)單Excel表格的功能

    這篇文章主要介紹了如何在Vue項(xiàng)目中使用vue-json-excel插件實(shí)現(xiàn)Excel表格的導(dǎo)出功能,包括安裝依賴、引入插件、使用組件、設(shè)置表頭和數(shù)據(jù)、處理空數(shù)據(jù)情況、源代碼修改以解決常見(jiàn)問(wèn)題,需要的朋友可以參考下
    2025-01-01
  • Vue.js常用指令匯總(v-if、v-for等)

    Vue.js常用指令匯總(v-if、v-for等)

    這篇文章主要為大家詳細(xì)匯總了Vue.js常用指令及使用方法,包括v-if、v-for、v-show、v-bind、v-on等指令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Vue3如何在setup中獲取元素引用(ref)

    Vue3如何在setup中獲取元素引用(ref)

    這篇文章主要介紹了Vue3如何在setup中獲取元素引用(ref)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Vue使用百度地圖實(shí)現(xiàn)城市定位

    Vue使用百度地圖實(shí)現(xiàn)城市定位

    這篇文章主要為大家詳細(xì)介紹了Vue使用百度地圖實(shí)現(xiàn)城市定位,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue.js中自定義Markdown插件實(shí)現(xiàn)References解析(推薦)

    Vue.js中自定義Markdown插件實(shí)現(xiàn)References解析(推薦)

    本文主要寫的是,如何編寫一個(gè)插件來(lái)解析<references>標(biāo)簽,并將其轉(zhuǎn)換為HTML,這種方法可以應(yīng)用于其他自定義標(biāo)簽和功能,為Vue.js應(yīng)用程序中的Markdown渲染提供了極大的靈活性,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • vue項(xiàng)目history模式下部署子路由跳轉(zhuǎn)失敗的解決

    vue項(xiàng)目history模式下部署子路由跳轉(zhuǎn)失敗的解決

    這篇文章主要介紹了vue項(xiàng)目history模式下部署子路由跳轉(zhuǎn)失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vee-validate vue 2.0自定義表單驗(yàn)證的實(shí)例

    vee-validate vue 2.0自定義表單驗(yàn)證的實(shí)例

    今天小編就為大家分享一篇vee-validate vue 2.0自定義表單驗(yàn)證的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • vue3+vite動(dòng)態(tài)加載路由,本地路由和線上路由匹配方式

    vue3+vite動(dòng)態(tài)加載路由,本地路由和線上路由匹配方式

    這篇文章主要介紹了vue3+vite動(dòng)態(tài)加載路由,本地路由和線上路由匹配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue前端實(shí)現(xiàn)導(dǎo)出頁(yè)面為pdf(分頁(yè)導(dǎo)出、不分頁(yè)導(dǎo)出及分模塊導(dǎo)出)

    vue前端實(shí)現(xiàn)導(dǎo)出頁(yè)面為pdf(分頁(yè)導(dǎo)出、不分頁(yè)導(dǎo)出及分模塊導(dǎo)出)

    在實(shí)際應(yīng)用中可能用戶希望將系統(tǒng)中一個(gè)頁(yè)面展示的所有數(shù)據(jù)報(bào)表,用PDF的文件格式下載下來(lái),以便于其他用途,這篇文章主要給大家介紹了關(guān)于vue前端實(shí)現(xiàn)導(dǎo)出頁(yè)面為pdf(分頁(yè)導(dǎo)出、不分頁(yè)導(dǎo)出及分模塊導(dǎo)出)的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • 帶你理解vue中的v-bind

    帶你理解vue中的v-bind

    如果你寫過(guò)vue,對(duì)v-bind這個(gè)指令一定不陌生。 下面小編將從源碼層面去帶大家剖析一下v-bind背后的原理,需要的小伙伴可以參考下面章的具體內(nèi)容
    2021-09-09

最新評(píng)論

肥乡县| 平舆县| 衡阳县| 全南县| 库尔勒市| 镇原县| 高台县| 邛崃市| 屏东市| 南丰县| 大城县| 镇雄县| 区。| 乐业县| 茶陵县| 榆社县| 菏泽市| 神农架林区| 宣恩县| 兴宁市| 商丘市| 邵阳县| 莱芜市| 从化市| 台南市| 上虞市| 马山县| 永春县| 德化县| 额敏县| 额济纳旗| 子长县| 沈阳市| 东乌| 香格里拉县| 富顺县| 蚌埠市| 海盐县| 柯坪县| 兴隆县| 怀化市|