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

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

 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/10206765.html