ch6-条件渲染

1 v-if

1.1 简单使用
<h1 class="h1" v-if="ok">yes</h1>
    <script>
            var  app1 = new Vue({
                el: ‘.h1‘,
                data: {
                    ok: true
                }
            });
     </script>
<h2 class="h1" v-if="ok">yes</h2>
<h2 v-else>no</h2>
    ok为true两个都显示,false只显示v-else部分

 1.2 template中的if条件组 ????      v-if 是一个指令,需要将它添加到一个元素上。      但是如果我们想切换多个元素呢?此时我们可以把一个 <template> 元素当做包装元素,      并在上面使用 v-if。最终的渲染结果不会包含 <template> 元素。
<template id="t1" v-if="ok">
              <h1>Title</h1>
              <p>段落1</p>
              <p>段落2</p>
</template>
    1.3 v-else        必须跟在v-if或v-else-if元素后面,否则无法识别

1.4 v-else-if 2.1.0新增,可以链式使用多次        必须跟在v-if 或v-else-if后面

1.5 用key管理可复用的元素        Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。        这么做,除了使 Vue 变得非常快之外,还有一些有用的好处
        <template v-if="loginType === ‘username‘">
          <label>Username</label>
          <input placeholder="Enter your username">
        </template>
        <template v-else>
          <label>Email</label>
          <input placeholder="Enter your email address">
       </template>
        在上面的代码中切换 loginType 将不会清除用户已经输入的内容。        因为两个模版使用了相同的元素,<input> 不会被替换掉——仅仅是替换了它的的 placeholder。
<template v-if="loginType === ‘username‘">
          <label>Username</label>
          <input placeholder="Enter your username" key="username-input">
        </template>
        <template v-else>
          <label>Email</label>
          <input placeholder="Enter your email address" key="email-input">
        </template>
        每次input会被重新渲染 但label仍然被复用--未添加key值

  2 v-show        2.1 另一个用于根据条件展示元素的选项是 v-show 指令。用法大致一样:            <h1 v-show="ok">Hello!</h1>            不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。            v-show 是简单地切换元素的 CSS 属性 display 。            注意, v-show 不支持 <template> 语法,也不支持 v-else。

3 v-if与v-show比较        v-if 是“真正的”条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。        v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。        相比之下, v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。        一般来说, v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,        则使用 v-show 较好;如果在运行时条件不太可能改变,则使用 v-if 较好。

4 v-if 与 v-for 一起使用        当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。
时间: 2024-10-14 04:42:20

ch6-条件渲染的相关文章

vue2.0 之条件渲染

条件渲染v-if.v-show <template> <div> <a v-if="isPartA">partA</a> <a v-show="!isPartA">partB</a> <button v-on:click="toggle">toggle</button> </div> </template> <script

vue条件渲染

v-if 在字符串模板中,如 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"&g

CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率

当场景中有比较复杂的模型时,条件渲染能够加速对复杂模型的渲染. 条件渲染(Conditional Rendering) 当我们能够断定一个模型被其他模型挡住(因此不会被Camera看到)时,我们就可以跳过对此模型的渲染.这就是条件渲染的根本. 那么如何去判断?方法就是用一个简单的包围盒(比如一个立方体)去渲染一下,看看fragment是不是有变化(即包围盒上的某些部分通过了depth test,最终渲染到Framebuffer上了).如果没有任何一个fragment发生改变,就说明这个包围盒是被

微信小程序自学第五课:条件渲染、列表渲染

一.条件渲染 1. wx:if 在框架中,我们用 wx:if="{{condition}}" 来判断是否需要渲染该代码块: <view wx:if="{{condition}}"> True </view> 也可以用 wx:elif 和 wx:else 来添加一个 else 块: <view wx:if="{{length > 5}}"> 1 </view> <view wx:elif=

小程序基础11:条件渲染

1.条件渲染 wx:if 在框架中,我们使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块 <view wx:if="{{condition}}"> True </view> 也可以用 wx:elif 和 wx:else 来添加一个 else 块 <view wx:if="{{length > 5}}"> 1 </view> <view wx:elif=&quo

关于vue.js中条件渲染的联系

html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>条件渲染</title></head><body> <!-- v-if 作为判断条件 如果满足则展示它所附着的元素的内容--> <!-- 除了v-if 还可以配合使用v-else--> <div

【03】Vue 之列表渲染及条件渲染

3.1. 条件渲染 有时候我们要根据数据的情况,决定标签是否进行显示或者有其他动作.最常见的就是,表格渲染的时候,如果表格没有数据,就显示无数据.如果有数据就显示表格数据. Vue帮我们提供了一个v-if的指令,帮助我们完成判断的模板处理. <div id="app"> <h1 v-if="ok">Yes</h1> <h1 v-else>No</h1> </div> <!-- 当ok为tr

Vue#条件渲染

根据不同的条件,响应不同的事件. https://jsfiddle.net/miloer/zed5p1r3/ 可以用template来包装元素,当然浏览器的最终渲染结果不会包含它.我觉得主要用它来自定义模块组件. <template v-if=“msg”><h1>Title</h1><p>Paragraph 1</p><p>Paragraph 2</p></template> 发现个小问题当JS代码有误的时候,

2017.11.7 ant design - upload 组件的使用, react 条件渲染以及 axios.all() 的使用

一.主要任务:悉尼小程序管理后台,添加景点页面的开发 二.所遇问题及解决 1. 上传多个不同分类音频信息时,如中文音频和英文音频,要求音频不是放在一个数组中的,每个音频是一个独立的字段,此时: <Upload action="/hserve/v2/file/upload/" // 必选参数,上传的地址: listType="picture" // 上传列表的内建样式,这个不是很明白 text.picture.picture-card 之间的区别,默认值为 te

微信小程序 --- if/else条件渲染

if 条件渲染:当为真的时候显示,当为假的时候隐藏: else 条件渲染:当为真的时候隐藏,当为假的时候显示: <view wx:if="{{true}}">{{text}}</view> <view wx:else="{{false}}">{{text}}</view> 可以这样玩: <button bindtap="btnclick">{{text}}</button>