【Vue】條件渲染(v-if有緩存功能,v-show沒有)

微信訂閱號:Rabbit_svip

Vue提供了v-if汉操,v-else再来,v-show這幾個指令來判斷是否該輸出指定的DOM元素。

本節(jié)目錄

  1. v-if 的用法
  2. v-if 和 v-else 的配合
  3. v-show 的用法
  4. v-if 和 v-show 的區(qū)別(包括緩存部分)





v-if

v-if 指令可以完全根據(jù)表達式的值在DOM中生成或移除一個元素磷瘤。
如果 v-if 表達式賦值為 false芒篷,那么對應的元素就會從DOM中 移除;
否則對應的元素將會被插入DOM中采缚。

用法如下

<!--HTML 代碼-->
<div id="app">
    <div v-if="yes">Yes</div>
</div>
/*JS代碼*/
new Vue({
    el: '#app',
    data: {
        yes: true
    }
)}

當前 yes 為 true针炉,所以 div 是顯示的。如果為 false 就不顯示了扳抽。





v-else

v-else 是要跟著 v-if 一起使用的篡帕。
else 也就字面意思殖侵。跟上面的 if 取反而已。

用法如下:

<!--HTML 代碼-->
<div id="app">
    <div v-if="yes">Yes</div>
    <div v-else>No</div>
</div>
/*JS代碼*/
new Vue({
    el: '#app',
    data: {
        yes: false
    }
)}

因為 yes 的值為 false镰烧,所以內(nèi)容為 “No” 的div會顯示拢军,內(nèi)容為 “Yes” 的div將會被移除。

注意拌滋,v-else 前一個元素朴沿,一定是設置了 v-if 的元素。
下面是錯誤寫法:

<!--HTML 代碼-->
<div id="app">
    <span v-if="yes">Yes</span>
    <br />
    <span v-else>No</span>
</div>
/*JS代碼*/
new Vue({
    el: '#app',
    data: {
        yes: false
    }
)}

因為內(nèi)容為 “No” 的 span 前面跟著的是
標簽败砂,這個標簽沒設置 v-if 赌渣,所以會報錯。


微信訂閱號:Rabbit_svip





v-show

v-show 的用法和 v-if 是差不多的昌犹。

<!--HTML 代碼-->
<div id="app">
    <div v-show="yes">Yes</div>
</div>
/*JS代碼*/
new Vue({
    el: '#app',
    data: {
        yes: true
    }
)}

但 v-else 是不能和 v-show 配合使用坚芜。如果需要做到 v-if 和 v-else 那樣配合,可以用以下寫法斜姥。

<!--HTML 代碼-->
<div id="app">
    <div v-show="yes">Yes</div>
    <!--下面的div進行取反-->
    <div v-show="!yes">No</div>
</div>
/*JS代碼*/
new Vue({
    el: '#app',
    data: {
        yes: true
    }
)}





v-if 和 v-show 的區(qū)別



【區(qū)別 1】展示方式不同鸿竖。

v-if 是插入或移除元素,在html模板里是插入铸敏,或者不存在缚忧。

<!--HTML 代碼-->
<div id="app">
    <div v-show="yes">Yes</div>
</div>
/*JS代碼*/
new Vue({
    el: '#app',
    data: {
        yes: false
    }
)}
微信訂閱號:Rabbit_svip

渲染出來后,完全看不到內(nèi)容為 “Yes” 的 div 的蹤影杈笔,只留下一個注釋標簽闪水。

而用 v-show 的話是下圖所示。


微信訂閱號:Rabbit_svip

我們還能找到內(nèi)容為 “Yes” 的 div蒙具,只是這個 div 設置了 display: none;

由此可看出球榆,v-show 為 false 時,只是用 css 把指定元素隱藏而已禁筏。





【區(qū)別 2】<template>元素

<template>元素能幫我們把一組內(nèi)容放到 <template> 這個根標簽里持钉。但瀏覽器不會渲染這個標簽。

v-if 是可以和 <template> 標簽配合使用的篱昔。但 v-show 不行每强。因為上面說了,瀏覽器不會渲染這個標簽旱爆。所以根本不可能在這個標簽上設置什么CSS樣式舀射。





【區(qū)別 3】緩存問題

v-if 是有緩存的。
v-show 沒有緩存怀伦。

下面的例子是用 v-if

<!--HTML代碼-->
<div id="app">
  <input type="text" v-if="write" class="inp1">

  <input type="text" v-else class="inp2">

  <button @click="write = !write">Change Input</button></div>
/*CSS代碼*/
body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  color: #fff;
}

.inp1 {
  border: 5px solid lightgreen;
}

.inp2 {
  border: 5px solid hotpink;
}
/*JS代碼*/
new Vue({
  el: "#app",
     data: {
      write: false
  }
})
微信訂閱號:Rabbit_svip

按了切換的按鈕,input 的內(nèi)容還是存在的山林。

如果用 v-show 的話房待,一切換內(nèi)容就跟著切換了邢羔。
v-show 的寫法可以自己試,這里提供我的代碼連接

線上代碼(可能要翻墻才能用)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桑孩,一起剝皮案震驚了整個濱河市拜鹤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌流椒,老刑警劉巖敏簿,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宣虾,居然都是意外死亡惯裕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門绣硝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜻势,“玉大人,你說我怎么就攤上這事鹉胖∥章辏” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵甫菠,是天一觀的道長挠铲。 經(jīng)常有香客問我,道長寂诱,這世上最難降的妖魔是什么拂苹? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮刹衫,結(jié)果婚禮上醋寝,老公的妹妹穿的比我還像新娘。我一直安慰自己带迟,他們只是感情好音羞,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仓犬,像睡著了一般嗅绰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搀继,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天窘面,我揣著相機與錄音,去河邊找鬼叽躯。 笑死财边,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的点骑。 我是一名探鬼主播酣难,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谍夭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了憨募?” 一聲冷哼從身側(cè)響起紧索,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菜谣,沒想到半個月后珠漂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡尾膊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年媳危,在試婚紗的時候發(fā)現(xiàn)自己被綠了眯停。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片济舆。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖莺债,靈堂內(nèi)的尸體忽然破棺而出滋觉,到底是詐尸還是另有隱情,我是刑警寧澤齐邦,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布椎侠,位于F島的核電站,受9級特大地震影響措拇,放射性物質(zhì)發(fā)生泄漏我纪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一丐吓、第九天 我趴在偏房一處隱蔽的房頂上張望浅悉。 院中可真熱鬧,春花似錦券犁、人聲如沸术健。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荞估。三九已至,卻和暖如春稚新,著一層夾襖步出監(jiān)牢的瞬間勘伺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工褂删, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留飞醉,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓屯阀,卻偏偏與公主長得像冒掌,于是被迫代替她去往敵國和親噪裕。 傳聞我的和親對象是個殘疾皇子蹲盘,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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