0

0

vue条件渲染包括什么

青灯夜游

青灯夜游

发布时间:2022-12-26 18:30:37

|

3289人浏览过

|

来源于php中文网

原创

vue条件渲染指令包括v-if、v-else、v-else-if、v-show。v-if指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回真值时才被渲染;v-else可以为v-if添加一个“else 区块”,v-else-if可以为v-if添加一个“else if 区块”。v-show根据一个条件决定是否显示元素或者组件,依赖于控制display属性。

vue条件渲染包括什么

本教程操作环境:windows7系统、vue3版,DELL G3电脑。

条件渲染

  • 在某些情况下,我们需要根据当前的条件决定某些元素或组件是否渲染,这个时候我们就需要进行条件判断了。
  • Vue提供了下面的指令来进行条件判断:
    • v-if
    • v-else
    • v-else-if
    • v-show

下面我们来对它们进行学习。

立即学习前端免费学习笔记(深入)”;

v-if、v-else、v-else-if

  • v-if、v-else、v-else-if用于根据条件来渲染某一块的内容:

    • 这些内容只有在条件为true时,才会被渲染出来;
    • 这三个指令与JavaScript的条件语句if、else、else if类似;

      v-if 指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回真值时才被渲染。

      v-else 可以为 v-if 添加一个“else 区块”。

      v-else-if 提供的是相应于 v-if 的“else if 区块”。它可以连续多次重复使用。

1.png

  • v-if的渲染原理:

    • v-if是惰性的;
    • 当条件为false时,其判断的内容完全不会被渲染或者会被销毁掉;
    • 当条件为true时,才会真正渲染条件块中的内容;

template元素

  • 因为v-if是一个指令,所以必须将其添加到一个元素上:
    • 但是如果我们希望切换的是多个元素呢?
    • 此时我们渲染div,但是我们并不希望div这种元素被渲染;
    • 这个时候,我们可以选择使用template;
  • template元素可以当做不可见的包裹元素,并且在v-if上使用,但是最终template不会被渲染出来:

    • 有点类似于小程序中的block

下面来通过例子好好了解v-if、v-else、v-else-if三个指令。

v-if

前面说到过v-if根据表达式来的值来判断在DOM中生成元素。比如:


v-if的值为true时,显示这个div元素

// JavaScript var app = new Vue({ el: '#app', data: { } })

这个时候

元素插入到div#app元素中,并渲染出来:

在Vue中,如果你需要让某个元素是否渲染,那就在该元素上添加v-if指令,并且设置其值为truefalse。比如上面的示例,我们设置的是true,元素被渲染。如果把上面的true值换成false

元素就不会渲染。

除了直接给v-if设置truefalse之外,还可以通过表达式来做判断。比如:


v-if的值为true时,显示这个div元素

// JavaScript var app = new Vue({ el: '#app', data: { isShow: true } })

上面的示例中,声明了isShow的值为true,然后在h1元素中,通过v-if指令绑定isShow。其实类似于v-if="true"h1元素也正常渲染:

当你把isShow设置为false时,h1元素又不会渲染。

豆包手机助手
豆包手机助手

豆包推出的手机系统服务级AI助手

下载

上面我们看到的是渲染一个元素,如果要渲染多个元素,那是不是直接里面嵌套多个元素呢?我们来验证一下自己的想法:


我是标题

我是段落

和我们想像的一样。但在Vue中,我们切换多个元素一般不这么使用,而是配合元素当做包装元素,并在上面使用v-if。最终的渲染结果不会包含元素。如下所示:

v-else

v-else和JavaScript中的else类似,但其要和v-if配合使用。比如我们做登录,如果登录了显示一个欢迎语,反则提示用户去登录。那么我们可以设置一个isLogined表达式,比如:


欢迎来到W3cplus!(^_^)

请先登录,再来!(^_^)

// JavaScript var app = new Vue({ el: '#app', data: { isLogined: true } })

如你所想,你在浏览器能看到下图的效果:

isLogined的值换成false,那么渲染出来的内容就变了:

在实际项目中,当我们一个组件在两种状态渲染的效果不一样的时候,这个时候使用v-ifv-else配合就很好实现了。比如中奖和未中奖:



v-else-if

v-else-if和JavaScript中的else if类似,需要和v-if配合在一起使用。当有几个条件同时在的时候,根据运算结果决定显示与否。如下面的代码,根据type的值决定显示哪一个区块。比如,我们的例子,设定的type的值B,那么就会显示区块B


显示A区域
显示B区域
显示C区域
// JavaScript var app = new Vue({ el: '#app', data: { type: "B" } })

如果修改type的值,将显示的区域会不一样:

vue条件渲染包括什么

v-show

  • v-show和v-if的用法看起来是一致的,也是根据一个条件决定是否显示元素或者组件:

vue条件渲染包括什么

v-showv-if功能有点相似,其中v-if依赖于控制DOM节点,而v-show是依赖于控制DOM节点的display属性。当v-show传入的值为true时,对应DOM元素的display的值为block之类的,反之为false时,display的值为none。也就是用户看不到元素的显示,但其DOM元素还是存在的。


我是一个标题

我是一个段落

// JavaScript var app = new Vue({ el: '#app', data: { isShow: false } })

在浏览器看到的效果将是这样的:

注意v-show 不支持  语法,也不支持 v-else

v-show和v-if的区别

  • 首先,在用法上的区别:
    • v-show是不支持template;
    • v-show不可以和v-else一起使用;
  • 其次,本质的区别:
    • v-show元素无论是否需要显示到浏览器上,它的DOM实际都是有存在的,只是通过CSS的display属性来进行切换;
    • v-if当条件为false时,其对应的原生压根不会被渲染到DOM中;
  • 开发中如何进行选择呢?
    • 如果我们的原生需要在显示和隐藏之间频繁的切换,那么使用v-show;
    • 如果不会频繁的发生切换,那么使用v-if;

【相关推荐:vuejs视频教程web前端开发

2.png

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

44

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

58

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

11

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

65

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

21

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号