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

vue 條件渲染v-if和v-show

 更新時(shí)間:2021年10月26日 17:06:36   作者:Silent丿丶黑羽  
這篇文章主要介紹了vue 條件渲染v-if和v-show,在模板中,可以根據(jù)條件進(jìn)行渲染。條件用到的是v-if、v-else-if以及v-else來(lái)組合實(shí)現(xiàn)的,有時(shí)候我們想要在一個(gè)條件中加載多個(gè)html元素,那么我們可以通過(guò)template元素上實(shí)現(xiàn),下面就來(lái)看看具體實(shí)現(xiàn)吧

1、v-if

在模板中,可以根據(jù)條件進(jìn)行渲染。條件用到的是v-if、v-else-if以及v-else來(lái)組合實(shí)現(xiàn)的。

示例代碼如下:

<div id="app">
    <p v-if="weather == 'sun'">今天去公園玩!</p>
    <p v-else-if="weather == 'rain'">今天去看電影!</p>
    <p v-else>今天哪兒也不去!</p>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            weather: 'sun'
        }
    });
</script>
 

2、在<template>上使用v-if

有時(shí)候我們想要在一個(gè)條件中加載多個(gè)html元素,那么我們可以通過(guò)template元素上實(shí)現(xiàn)。

示例代碼如下:

<div id="app">
    <template v-if="age<18">
        <p>數(shù)學(xué)多少分?</p>
        <p>英語(yǔ)多少分?</p>
    </template>
    <template v-else-if="age>=18 && age<25">
        <p>結(jié)婚了嗎?</p>
        <p>考研究生了嗎?</p>
    </template>
    <template v-else>
        <p>加薪了嗎?</p>
        <p>工資多少?</p>
    </template>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            age: 24
        }
    });
</script>
 

3、用 key 管理可復(fù)用的元素

另外,在模板中,Vue會(huì)盡量重用已有的元素,而不是重新渲染,這樣可以變得更加高效。

如果我們?cè)试S用戶(hù)在不同的登錄方式之間切換:

<div id="app">
  <template v-if="loginType === 'username'">
    <label for="username">用戶(hù)名:</label>
    <input type="text" id="username" name="username" placeholder="用戶(hù)名">
  </template>
  <template v-else>
    <label for="email">Email</label>
    <input type="text" id="email" name="email" placeholder="郵箱">
  </template>
  <div>
    <button @click="changeLoginType">切換登錄類(lèi)型</button>
  </div>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      loginType: "username"
    },
    methods: {
      changeLoginType(){
        // 如果類(lèi)型為username,則切換成email,否則反之
        this.loginType = this.loginType==="username"?"email":"username";
      }
    }
  })
</script>

接下來(lái)我們查看下效果圖:

這個(gè)里面會(huì)有一個(gè)問(wèn)題,就是如果我在username的輸入框中輸入完信息,切換到郵箱中,之前的信息還是保留下來(lái),這樣肯定不符合需求的,如果我們想要讓html元素每次切換的時(shí)候都重新渲染一遍,可以在需要重新渲染的元素上加上唯一的key屬性,其中key屬性推薦使用整形,字符串類(lèi)型。

示例代碼如下:

<div id="app">
  <template v-if="loginType === 'username'">
    <label for="username">用戶(hù)名:</label>
    <input type="text" id="username" name="username" placeholder="用戶(hù)名" key="username">
  </template>
  <template v-else>
    <label for="email">Email</label>
    <input type="text" id="email" name="email" placeholder="郵箱" key="email">
  </template>
  <div>
    <button @click="changeLoginType">切換登錄類(lèi)型</button>
  </div>
</div>

我們可以看到用戶(hù)名原來(lái)輸入的123切換到郵箱方式時(shí),輸入框中的123不見(jiàn)了

注意: <label>元素仍然會(huì)被高效地復(fù)用,因?yàn)樗鼈儧](méi)有添加key屬性。

4、v-show

另一個(gè)用于根據(jù)條件展示元素的選項(xiàng)是 v-show 指令。用法大致一樣:

<h1 v-show="ok">Hello!</h1>


不同的是帶有 v-show 的元素始終會(huì)被渲染并保留在 DOM 中。v-show 只是簡(jiǎn)單地切換元素的 CSS property display

注意:v-show 不支持 <template> 元素,也不支持 v-else。

4.1 v-if 對(duì)比 v-show

v-if 是“真正”的條件渲染,因?yàn)樗鼤?huì)確保在切換過(guò)程中條件塊內(nèi)的事件監(jiān)聽(tīng)器和子組件適當(dāng)?shù)乇讳N(xiāo)毀和重建。

v-if 也是惰性的:如果在初始渲染時(shí)條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r(shí),才會(huì)開(kāi)始渲染條件塊。

相比之下,v-show 就簡(jiǎn)單得多——不管初始條件是什么,元素總是會(huì)被渲染,并且只是簡(jiǎn)單地基于 CSS 進(jìn)行切換。

一般來(lái)說(shuō),v-if 有更高的切換開(kāi)銷(xiāo),而 v-show 有更高的初始渲染開(kāi)銷(xiāo)。因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運(yùn)行時(shí)條件很少改變,則使用 v-if 較好。

到此這篇關(guān)于vue 條件渲染v-if和v-show的文章就介紹到這了,更多相關(guān)vue 條件渲染內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

香港 | 建水县| 霍城县| 丹阳市| 临城县| 松阳县| 马公市| 六枝特区| 岐山县| 娱乐| 洪洞县| 水富县| 巢湖市| 武鸣县| 宜君县| 常熟市| 泽州县| 三明市| 逊克县| 霍邱县| 琼中| 建宁县| 顺昌县| 铁力市| 宝应县| 东台市| 台东县| 雷山县| 屏东县| 旺苍县| 遂平县| 芜湖县| 巴中市| 遂宁市| 宁蒗| 乌什县| 吉隆县| 丹棱县| 常熟市| 祁阳县| 黑龙江省|