1. 程式人生 > 其它 >vue學習記錄-06 條件判斷

vue學習記錄-06 條件判斷

技術標籤:Vue學習記錄javascriptcssvue.jshtmlhtml5

vue學習記錄-06 條件判斷

這篇文章是根據codewhy老師在b站的視訊進行的學習記錄


文章目錄


一、v-if的使用

if條件判斷在每種語言中都是非常常用的,VUE中提供了v-if讓開發者能夠根據一定的條件對於元素內容進行渲染。
這裡我們使用一個值為布林的資料isShow作為v-if的值。

  <div id=
'app'> <h2 v-if="isShow"> <div>{{message}}</div> </h2> </div>
    const app = new Vue({
      el: '#app',
      data: {
        message: 'Hello,Vue!',
        isShow:true
      },
    })

二、v-if和v-else的結合使用

有if自然也會有else,v-else就是被用來給哪些不符合給定的條件的元素進行渲染的指令。

  <div id='app'>
    <h2 v-if="isShow">
      <div>{{message}}</div>
    </h2>
    <h1 v-else>isShow為false時,顯示我</h1>
  </div>
    const app = new Vue({
      el: '#app',
      data: {
        message: 'Hello,Vue!',
        isShow:true
      },
    }
)

v-else不需要值
v-else必須跟在v-if後面

三、v-if和v-else-if和v-else的使用

類似於elseif,v-else-if可以對不符合條件的結果再一次判斷。

<div id='app'>
    <h2 v-if="score>=90">優秀</h2>
    <h2 v-else-if="score>=80">良好</h2>
    <h2 v-else-if="score>=60">及格</h2>
    <h2 v-else>不及格</h2>
</div>
const app = new Vue({
  el: '#app',
  data: {
    score:99
  }
})

不過,對於這些複雜邏輯,一般還是會更推薦使用計算屬性computed,HTML程式碼裡面不適合寫過多的邏輯。

<h2>{{result}}</h2>
computed:{
        result(){
          let showMessage='';
          if(this.score>=90){
            showMessage='優秀'
          }else if(this.score>=80){
            showMessage='良好'
          }else if(this.score>=60){
            showMessage='及格'
          }else{
            showMessage='不及格'
          }
          return showMessage
        }
      }

四、使用者登入切換的案例

在編寫登陸介面時,經常會遇到需要切換登入方式的要求,下面我們來看看一般會怎麼實現。

  <div id='app'>
    <span v-if="isUser">
      <label for="username">使用者賬號</label>
      <input type="text" id=username placeholder="使用者賬戶">
    </span>
    <span v-else>
      <label for="useremail">使用者郵箱</label>
      <input type="text" id=useremail placeholder="使用者郵箱">
    </span>
    <button @click="isUser=!isUser">切換型別</button>
  </div>

一個小細節:如果label標籤的for屬性綁定了input輸入框id,那麼使用者點選label就可以直接聚焦對應的input輸入框

    const app = new Vue({
      el: '#app',
      data: {
        isUser: true
      }
    })

效果:
v-if
點選切換型別:
v-if
注意:如果此時輸入框內有文字,那麼切換型別之後,新的輸入框內也是會有一樣的內容的。
v-if
v-if
切換後文字內容沒有被清空

這是因為vue在進行dom渲染時,出於效能考慮會盡可能的複用已存在的元素,如果不希望元素被複用,那麼給input輸入框加上不同的key就可以解決這個問題了。

<input type="text" id=username placeholder="使用者賬戶" key="username">
<input type="text" id=useremail placeholder="使用者郵箱" key="useremail">

五、v-show的使用

除了v-if,VUE還給我們提供了另一個指令v-show用於控制元素的渲染。

<h2 v-show="isShow" id="b">{{message}}</h2>
      data: {
        message: 'Hello,Vue!',
        isShow:true
      }

那麼,v-if和v-show作用這麼相似,他們之前有什麼不同呢?
1、如果使用v-if控制渲染,那麼當條件為false時,包含了v-if指令的元素,根本就不會存在dom中
2、如果使用v-show控制渲染時,那麼當條件為false時,v-show只是給我們的元素新增一個行內樣式:display:none

因此,出於效能考慮,我們通常會這麼選擇使用:
1、當需要在顯示與隱藏之間切換頻繁時,使用v-show
2、當只有一次切換時,使用v-if