vue.js选择if(条件渲染)详解

一、总结

一句话总结:

v-if



1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>v-if</title>
6 <link rel="stylesheet" type="text/css" href="css/style.css">
7 <script type="text/javascript" src="js/vue.js"></script>
8 <script type="text/javascript">
9 window.onload = function() {
10 var dataList = {
11 innerText: '大家好,欢迎来到麦子学院!',
12 display: true
13 };
14 new Vue({
15 el: 'section',
16 data: dataList
17 });
18
19 setTimeout(function() {
20 dataList.display = false;
21 }, 5000);
22 };
23 </script>
24 </head>
25 <body>
26 <section>
27 <div v-if="display" class="head face">{{ innerText }}</div>
28 </section>
29 </body>
30 </html>


 

 

1、vue.js中如何进行if判断(条件渲染)?

v-if

<h1 v-if="ok">Yes</h1>  是以ok为键的键值对,控制ok这个键的值就可以动态控制显示效果

v-if是直接控制元素有还是没有,没有的话就是打开控制台看不到,和display:none的效果不一样


在字符串模板中,如 Handlebars,我们得像这样写一个条件块:

<!-- Handlebars 模板 -->
{{#if ok}}
<h1>Yes</h1>
{{/if}}


在 Vue.js,我们使用 ​​v-if​​ 指令实现同样的功能:

<h1 v-if="ok">Yes</h1>


也可以用 ​​v-else​​ 添加一个 "else" 块:

<h1 v-if="ok">Yes</h1>
<h1 v-else>No</h1>


 

详细示例:



1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>v-if</title>
6 <link rel="stylesheet" type="text/css" href="css/style.css">
7 <script type="text/javascript" src="js/vue.js"></script>
8 <script type="text/javascript">
9 window.onload = function() {
10 var dataList = {
11 innerText: '大家好,欢迎来到麦子学院!',
12 display: true
13 };
14 new Vue({
15 el: 'section',
16 data: dataList
17 });
18
19 setTimeout(function() {
20 dataList.display = false;
21 }, 5000);
22 };
23 </script>
24 </head>
25 <body>
26 <section>
27 <div v-if="display" class="head face">{{ innerText }}</div>
28 </section>
29 </body>
30 </html>


 

 

2、vue比普通的字符串模板的条件替换好在哪?

简洁

在字符串模板中,如 Handlebars,我们得像这样写一个条件块:

<!-- Handlebars 模板 -->
{{#if ok}}
<h1>Yes</h1>
{{/if}}


在 Vue.js,我们使用 ​​v-if​​ 指令实现同样的功能:

<h1 v-if="ok">Yes</h1>


也可以用 ​​v-else​​ 添加一个 "else" 块:

<h1 v-if="ok">Yes</h1>
<h1 v-else>No</h1>


 

3、vue.js中的if如何控制多个标签的显示隐藏?

template v-if

因为 ​​v-if​​ 是一个指令,需要将它添加到一个元素上。但是如果我们想切换多个元素呢?此时我们可以把一个 ​​<template>​​ 元素当做包装元素,并在上面使用 ​​v-if​​,最终的渲染结果不会包含它。

<template v-if="ok">
<h1>Title</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</template>


 

4、template v-if和直接加父级div的v-if的区别是什么?

多 标签

template标签并不会显示在页面和控制台中,其实用div标签同样可以实现,但是用div会多一个div标签

 

5、vue.js中根据条件展示元素的标签是什么(和v-if相对的:v-show是display)?

v-show display

另一个根据条件展示元素的选项是 ​​v-show​​ 指令。用法大体上一样:

<h1 v-show="ok">Hello!</h1>


不同的是有 ​​v-show​​ 的元素会始终渲染并保持在 DOM 中。​​v-show​​ 是简单的切换元素的 CSS 属性 ​​display​​。

注意 ​​v-show​​ 不支持 ​​<template>​​ 语法。

 

 

6、vue.js中if-else结构如何实现?

v-else

可以用 ​​v-else​​ 指令给 ​​v-if​​ 或 ​​v-show​​ 添加一个 "else 块":

<div v-if="Math.random() > 0.5">
Sorry
</div>
<div v-else>
Not sorry
</div>


​v-else​​ 元素必须立即跟在 ​​v-if​​ 或 ​​v-show​​ 元素的后面——否则它不能被识别。

 

7、v-if 和 v-show的区别在哪来?

存在 display

v-if是这个元素存在还是不存在,和php控制的标签的显示隐藏效果是一样的

v-show是控制的display是否为none

在切换 ​​v-if​​ 块时,Vue.js 有一个局部编译/卸载过程,因为 ​​v-if​​ 之中的模板也可能包括数据绑定或子组件。​​v-if​​ 是真实的条件渲染,因为它会确保条件块在切换当中合适地销毁与重建条件块内的事件监听器和子组件。

​v-if​​ 也是惰性的:如果在初始渲染时条件为假,则什么也不做——在条件第一次变为真时才开始局部编译(编译会被缓存起来)。

相比之下,​​v-show​​ 简单得多——元素始终被编译并保留,只是简单地基于 CSS 切换。

一般来说,​​v-if​​ 有更高的切换消耗而 ​​v-show​​ 有更高的初始渲染消耗。因此,如果需要频繁切换 ​​v-show​​ 较好,如果在运行时条件不大可能改变 ​​v-if​​ 较好。

 

 

 

 

二、内容在总结中

参考:vue 条件渲染_w3cschool

https://www.w3cschool.cn/aekdgs/rb8h2dn1.html

 


 


我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: ​​fanrenyi.com​​;有各种前端、后端、算法、大数据、人工智能等课程。

​版权申明:欢迎转载,但请注明出处​

一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。