條件渲染

\color{red}{v-if}

v-if指令用于條件性的渲染一塊內(nèi)容,這部分內(nèi)容只會在指令表達式返回true的時候被渲染蚪战。

<div v-if="awesome">顯示div</div>
data() {
    return {
        awesome:true,
    }
},

也可以使用v-else添加一個else塊:

<div v-if="awesome">顯示div</div>
<div v-else>否則是這個</div>
data() {
    return {
        awesome:true,
    }
},
\color{green}{\#}\color{red}{<template>}元素上使用\color{red}{<v-if>}條件渲染分組

因為v-if是一個指令,所以必須將它添加到元素上梯澜。但是如果想切換多個元素千康?此時可以把一個<template>元素當(dāng)做不可見的包裹元素,并在上面使用v-if剿吻。最終的渲染結(jié)果將不包含<template>元素。

<block  v-if="awesome">
    <div>顯示div</div>
</block>
data() {
    return {
        awesome:true,
    }
},

\color{green}{\#} \color{red}{v-else}

可以使用v-else指令來表示v-if的else塊:

<div v-if="Math.random() > 0.5">
  妖鬼現(xiàn)形吧
</div>
<div v-else>
  千年老妖
</div>

v-else元素必須緊跟在帶v-if或者v-else-if的元素后面串纺,否則他將不會被識別丽旅。

\color{green}{\#} \color{red}{v-else-if}

v-else-if充當(dāng)v-if的"else-if"塊,可以連續(xù)使用:

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>

類似于v-else,v-else-if也必須緊跟在帶v-if或者v-else-if的元素之后纺棺。
?

\color{green}{\#}\color{red}{key}管理可復(fù)用的元素

Vue會復(fù)用已有元素而不是從頭開始渲染,使得非抽希快之外還有一些其他好處。如:在不同登錄方式之間切換:

<template v-if="loginType === 'username'">
    <label>Username</label>
    <input placeholder="請輸入用戶名">
  </template>
  <template v-else>
    <label>Email</label>
    <input placeholder="請輸入郵箱">
  </template>
  <button @click="changeLogin">切換登錄</button>

//邏輯處理
data() {
  return {
        loginType:'username',
     }
  },
  methods:{
    changeLogin(){
        if(this.loginType === "username"){
            this.loginType = 'email';
        }else{
            this.loginType = 'username';
        }
    }
 }

在上面的例子中:切換loginType不會清楚用戶已經(jīng)輸入的內(nèi)容祷蝌。因為兩個模板使用了相同的元素茅撞,<input>不會被替換掉——僅僅是替換了它的placeholder.

這樣是不符合實際要求的:所以vue提供了一種方式來表達“這兩個元素是安全獨立的,不要復(fù)用他們”巨朦。只需添加一個具有唯一值的key屬性即可

<template v-if="loginType === 'username'">
  <label>Username</label>
  <input placeholder="請輸入用戶名" key="username-input">
</template>
<template v-else>
  <label>Email</label>
  <input placeholder="請輸入郵箱" key="email-input">
</template>
<button @click="changeLogin">切換登錄</button>

注意米丘,<lable>元素仍然會被高效的復(fù)用,因為他沒有key屬性罪郊。

\color{red}{v-show}

另一個用于根據(jù)條件展示元素的選項是v-show指令。

<div v-show="flag">是否顯示</div>
data() {
    return {
        flag:false,
    }
},

v-showv-if不同點:
v-show修飾的元素始終會被渲染并保留在DOM中尚洽。只是簡單的切換元素的css樣式display悔橄。
v-if可以控制元素是否被渲染(而不是已經(jīng)渲染之后,在控制隱藏狀態(tài))。

\color{red}{注意:}v-show不支持<template>元素癣疟,也不支持v-else.

?

\color{red}{v-if} vs \color{red}{v-show}

v-if 是“真正”的條件渲染挣柬,因為它會確保在切換過程中條件塊內(nèi)的事件監(jiān)聽器和子組件適當(dāng)?shù)乇讳N毀和重建。

v-if 也是惰性的:如果在初始渲染時條件為假睛挚,則什么也不做——直到條件第一次變?yōu)檎鏁r邪蛔,才會開始渲染條件塊。

相比之下扎狱,v-show 就簡單得多——不管初始條件是什么侧到,元素總是會被渲染,并且只是簡單地基于 CSS 進行切換淤击。

一般來說匠抗,v-if有更高的切換開銷,而 v-show 有更高的初始渲染開銷污抬。因此汞贸,如果需要非常頻繁地切換,則使用 v-show 較好印机;如果在運行時條件很少改變矢腻,則使用 v-if 較好。

?

\color{red}{v-if}\color{red}{v-for} 一起使用

不推薦同時使用v-ifv-for射赛。

當(dāng)v-ifv-for一起使用時多柑,v-for具有比v-if更高的優(yōu)先級。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咒劲,一起剝皮案震驚了整個濱河市顷蟆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腐魂,老刑警劉巖帐偎,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蛔屹,居然都是意外死亡削樊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門兔毒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漫贞,“玉大人,你說我怎么就攤上這事育叁⊙钙辏” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵豪嗽,是天一觀的道長谴蔑。 經(jīng)常有香客問我豌骏,道長,這世上最難降的妖魔是什么隐锭? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任窃躲,我火速辦了婚禮,結(jié)果婚禮上钦睡,老公的妹妹穿的比我還像新娘蒂窒。我一直安慰自己,他們只是感情好荞怒,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布洒琢。 她就那樣靜靜地躺著,像睡著了一般挣输。 火紅的嫁衣襯著肌膚如雪纬凤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天撩嚼,我揣著相機與錄音停士,去河邊找鬼。 笑死完丽,一個胖子當(dāng)著我的面吹牛恋技,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逻族,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蜻底,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了聘鳞?” 一聲冷哼從身側(cè)響起薄辅,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抠璃,沒想到半個月后站楚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡搏嗡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年窿春,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片采盒。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡旧乞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出磅氨,到底是詐尸還是另有隱情尺栖,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布烦租,位于F島的核電站延赌,受9級特大地震影響货徙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜皮胡,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赏迟。 院中可真熱鬧屡贺,春花似錦、人聲如沸锌杀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糕再。三九已至量没,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間突想,已是汗流浹背殴蹄。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留猾担,地道東北人袭灯。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像绑嘹,于是被迫代替她去往敵國和親稽荧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • v-if 在字符串模板中工腋,比如 Handlebars姨丈,我們得像這樣寫一個條件塊: 在 Vue 中,我們使用 v-i...
    Program_黑閱讀 665評論 0 7
  • Vue條件渲染 v-if v-if可使用v-else指令來表示它的else塊擅腰,v-else元素必須緊跟帶v-if或...
    JunChow520閱讀 185評論 0 0
  • 指令 v-if是一個指令蟋恬,必須將他添加到一個元素上 v-else v-else-if 用key管理可復(fù)用的元素 v...
    上山走18398閱讀 224評論 0 0
  • 條件渲染 v-if指令 ? 利用v-if指令,可以實現(xiàn)在同一頁面惕鼓,不同的時期筋现,根據(jù)需要渲染顯示不同的塊或模板<te...
    Husbin閱讀 452評論 0 0
  • 條件渲染 v-if 在<template>元素上使用v-if條件渲染分組 最終的渲染結(jié)果將不包含<template...
    oWSQo閱讀 779評論 1 0