_
2023/5/11 18:36:461844

今天我们要说的是vue中的条件渲染,在vue中我们可以通过条件判断去控制某些内容的显示和隐藏。

条件渲染指令v-if

我们新建一个demo11.html文件,复制一下hello world代码。然后来编写4个div,用来模拟一个问答题,在最上面用p标签来写一段话,”谁是世界上最漂亮的人?“。然后在div 中列出选项

A 、张三 B、李四 C、如花 D、别人

 <div id="app" >
    <p>谁是世界上最美丽的人?</p>
    <div v-if="result=='A'">A、张三</div>
    <div v-if="result=='B'">B、李四</div>
    <div v-if="result=='C'">C、如花</div>
    <div v-if="result=='D'">D、别人</div>
  </div>

然后用浏览器打开,页面大概就这个样子。

回到代码,然后我们在data中把message变量删除掉, 声明一个result来存储答案,默认我们给它赋值一个”A“。现在我想只显示result对应的答案选项,我们可以在选项div中使用v-if指令,给它添加一个条件,条件成立时才会显示这个选项,当result==A时显示张三,然后再给其他几个选项也添加上if判断,当result等于B时显示李四,等于C时显示如花,等于D时显示非人类。

<body>
  <div id="app" >
    <p>问:谁是世界上最美丽的人?</p>
    <div v-if="result=='A'">A、张三</div>
    <div v-if="result=='B'">B、李四</div>
    <div v-if="result=='C'">C、如花</div>
    <div v-if="result=='D'">D、非人类</div>
  </div>
</body>
<script>
  const App = Vue.createApp({
    data() {
      return {
        result:'A'
      }
    },
  })
  const vm = App.mount("#app")
</script>

我们保存一下,来到浏览器点击一下刷新,这时候页面上就只显示了张三这条选项。

我们再来把result改成"B" ,然后保存,刷新浏览器页面上就只显示了李四这条选项了。

vue中v-if和js中的if条件判断语句是一样的,同样的也支持else 和 else if ,在vue中我们写成v-else和v-else-if。

回到代码中,我们就可以把其他判断写成v-else-if。

如果这四个选项都不是的话,我们再来添加一个div表示超出答题范围。这个我们就可以用v-else来让它显示了。

我在把result 修改成”E“,刷新浏览器,”E“不存在所以就会显示超出答题范围。

最后我们在浏览器来看一下,在浏览器中没有显示的选项,我们发现不显示的选贤是连dom都不存在的,而不是简单的显示和隐藏。只有对应条件成立了才会渲染出dom。相反条件成立时会直接删除掉这个dom。

视频讲解