v-if

功能:通过v-if="ture\false"来决定标签里面的内容是否渲染。

v-if + v-else

如果v-if里面的内容为true,渲染v-if的内容,否则渲染v-else的内容。

<div id="app">
  <h2 v-if="isShow">
    <div>abc</div>
    {{message}}
  </h2>
  <h1 v-else>isShow为false时, 显示我</h1>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好啊',
      isShow: true
    }
  })
</script>

v-if + v-else-if + v-else

根据条件判断应该渲染哪个标签的内容。

<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>

  <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 = '优秀'
        } else if (this.score >= 80) {
          showMessage = '良好'
        }
        // ...
        return showMessage
      }
    }
  })
</script>

v-show

v-show只是增加了行内样式 display:none,让标签不显示,但这个标签还是被渲染到真实dom里面的。

v-if是根据条件,决定这个元素要不要被渲染到真实dom。

开发中选择v-if还是v-show?

如果元素的切换频率很高,使用v-show
如果只切换一次,则使用v-if


白话前端
109 声望8 粉丝