Vue.js 条件渲染 (v-if v-else v-if-else v-show)的熟练使用,一看就会

举报
可期 发表于 2021/12/02 18:14:45 2021/12/02
【摘要】 一. Vue条件渲染分享我的学习收获希望能够帮到大家今天为大家分享关于Vue的条件渲染(v-if v-else v-else-if v-show)下面我们来结合代码理解<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="...

一. Vue条件渲染

分享我的学习收获希望能够帮到大家

今天为大家分享关于Vue的条件渲染(v-if v-else v-else-if v-show)
下面我们来结合代码理解

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>条件渲染</title>
    <script src="../Vue.js/vue.js"></script>
</head>
<body>
    <div id="root">
        <!-- 使用v-show做条件渲染 a=false时h1不显示-->
        <h1 v-show="a===1">如果事与愿违,那一定另有安排--{{name}}</h1>
        
        <h2>当前的n值是:{{n}}</h2>
        <!-- 使用v-if做条件渲染 在使用时不允许被打断-->
        <h2 v-if='n === 1'>现在我等于1</h2>
        <h2 v-else-if='n === 2'>现在我等于2</h2>
        <h2 v-else-if='n === 3'>现在我等于3</h2>
        <!-- v-if  v-else  v-else-if 用法和if else else-if 用法一样 -->
        <h2 v-else>我不等于1,2,3</h2>
        <button @click='n++'>点我n+1</button>
        <div>@</div>
        
        <!-- template模板只能配合v-if使用 -->
        <template v-if='a===1'>
            <h1>你好</h1>
            <h2>可期</h2>
        </template>
    </div>

    <script>
        const vm = new Vue({
            el:'#root',
            data:{
                name:"某某",
                a:1,
                n:0
            }
        })
    </script>
</body>
</html>

1.如果我们想要控制内容是否显示我们就可以使用v-show

v-show=“a===1”>如果事与愿违,那一定另有安排–{{name}}

例如此处 v-show后面的 “表达式” 当表达式值为false时则不显示内容,或不符合表达式的条件,注:仅仅是内容不显示

2.下面我们来设置一个按钮,来控制当条件符合要求时可以显示内容,使用v-if

<h2>当前的n值是:{{n}}</h2>
<h2 v-if='n === 1'>老大</h2>
<h2 v-if='n === 2'>老二</h2>
<h2 v-if='n === 3'>老三</h2>
<button @click='n++'>点我n+1</button>

这里我们点击按钮来使n的值增加,当n等于1时老大出现,
当n等于2时老二出现,当n等于3时老三出现

3.v-if v-else v-else-if 组合使用
在Vue中v-if v-else v-else-if 也可以组合使用,即原理和js中一样

<h2>当前的n值是:{{n}}</h2>
<h2 v-if='n === 1'>老大</h2>
<h2 v-else-if='n === 2'>老二</h2>
<h2 v-else-if='n === 3'>老三</h2>
<h2 v-else>我不等于1,2,3</h2>
<button @click='n++'>点我n+1</button>

同样当n的值分别等于1,2,3 时分别显示老大,老二,老三,当n的值都不等于1,2,3时则显示不等于1,2,3.
但是在此处需要注意的是使用v-if做条件渲染 在使用时不允许被打断

4.<template></template>标签的使用
如果在代码中出现条件相同的语句,想要一次同时输出,那我们就可以使用<template>。当然也可以使用v-show ,但使用v-show 就比较繁琐,需要每条语句都添加相同的条件,若单独使用v-if会将不展示的dom元素完全删除,那么就无法调用。然而<template>就很好的解决的这个问题

<template v-if='a===1'>
            <h1>你好</h1>
            <h2>可期</h2>
        </template>

这样我们只需要满足条件a=1,那么两个标签中的内容都会被dom捕捉,且当内容隐藏时,还可以在代码中调用。
注:template只能配合v-if使用

二.内容总结:

条件渲染:

        1.v-if
            写法:
                (1).v-if="表达式"
                (2).v-else-if="表达式"
                (3).v-else="表达式"
            适用于:切换频率较低的场景
            特点:不展示的dom元素直接删除
            注意:v-if 可以和v-else-if,v-else 一起使用,但要求结构不能被打断
        2.v-show
            写法:v-show="表达式"
            适用于:频率较高的切换
            特点:不展示的dom元素被溢移除,仅仅是样式隐藏掉
        3.备注:
            使用v-if时,元素可能无法获取到,未使用v-show一定能获取到
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。