vue条件渲染包括什么

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-ifv-elsev-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元素

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

登录后复制

这个时候

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

vue条件渲染包括什么

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

元素就不会渲染。

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

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

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

登录后复制

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

vue条件渲染包括什么

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

vue条件渲染包括什么

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

我是标题

我是段落

登录后复制

vue条件渲染包括什么

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

    

标题

段落 1

段落 2

登录后复制

vue条件渲染包括什么

v-else

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

欢迎来到W3cplus!(^_^)

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

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

登录后复制

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

vue条件渲染包括什么

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

vue条件渲染包括什么

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

    
恭喜你中了5元红包
@@##@@
亲,就差那么一点点
@@##@@

登录后复制

v-else-if

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

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

登录后复制

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

vue条件渲染包括什么

v-show

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

vue条件渲染包括什么

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

我是一个标题

我是一个段落

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

登录后复制

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

vue条件渲染包括什么

注意,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视频教程、vuejs视频教程】

2.pngvue条件渲染包括什么

以上就是vue条件渲染包括什么的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2923444.html

(0)
上一篇 2025年3月11日 18:47:55
下一篇 2025年2月25日 13:51:20

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue中mvvm和mvc的区别有哪些

    mvvm和mvc的区别:1、mvvm各部分的通信是双向的,而mvc各部分通信是单向的。2、MVVM实现了view与model的自动同步,也就是model属性改变时,不需要手动操作dom元素去改变view的显示,而是改变属性后该属性对应的vi…

    2025年3月11日 编程技术
    200
  • 用vue写的页面后缀名是什么

    用vue写的页面后缀名是“.vue”。“.vue”文件是一个自定义的文件类型,用类HTML语法描述一个Vue组件;一个vue文件就是一个组件。vue页面有3个组成部分:1、模板(template),即template标签包裹的界面展示代码(…

    2025年3月11日 编程技术
    200
  • vue遍历对象属性的方法有哪些

    遍历对象属性的方法有:1、使用v-for指令遍历出对象的key和value,语法“v-for=”(val,key,i) in obj””;2、用Object.keys()遍历对象的键和值,语法“Object.keys…

    2025年3月11日 编程技术
    200
  • vue事件总线废除了吗

    vue3取消了全局事件总线,废除原因是安全性低。全局事件总线是一个全局任意组件通信技术,即任意组件间的通信均可实现。在vue3中,如果想要使用全局事件总线,需要引入第三方库mitt或tiny-emitter。 本教程操作环境:windows…

    2025年3月11日
    200
  • vue支持ie6么

    vue不支持ie6;vue官方声明是支持ie8以上版本的。不支持原因:1、ie8及以下版本不支持“Object.defineProperty”方法,但该方法是vue实现响应式的所必须的;2、Vue需要Promise的支持,而IE8及以下版本…

    2025年3月11日
    200
  • vue中mounted和created有什么区别

    区别:1、created在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图;mounted在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。2、created中无法对chart…

    2025年3月11日 编程技术
    200
  • 安装vue devtools失败怎么办

    安装vue devtools失败的解决办法:1、在官网下载“vue-devtools”压缩包并解压;2、安装git bash;3、在终端cd到“devtools-main”文件夹中;4、执行“npm install yarn -g”命令;5…

    2025年3月11日 编程技术
    200
  • vue怎么修改父组件值

    vue修改父组件值的方法:1、通过props的方式,将父组件的方法传递到子组件,在子组件中通过props接收;2、通过“this.$emit”触发父组件方法实现修改;3、通过“this.$parent”直接触发父组件修改即可。 本教程操作环…

    2025年3月11日
    200
  • vue二级路由报错怎么办

    vue二级路由报错的解决办法:1、检查并删除二级路由路径前面的斜杠;2、检查父路由是否有path,若path是斜杠,则redirect直接匹配page2;3、不使用redirect,并设置默认显示的子路由path为空即可。 本教程操作环境:…

    2025年3月11日
    200
  • vue怎么禁止返回到上一页

    vue禁止返回到上一页的方法:1、通过“npm install vue-prevent-browser-back –save”命令安装“vue-prevent-browser-back”;2、使用“import preventB…

    2025年3月11日
    200

发表回复

登录后才能评论