vue渲染

渲染:条件渲染,列表渲染

1.条件渲染

v-if、v-else、v-else-if       v-else、v-else-if 必须跟在v-if、v-else-if 之后否则不会被识别

<div v-if="Math.random() > 0.5">
  Now you see me
</div>
<div v-else>
  Now you don‘t
</div>
<!-- 如果切换多个元素,可以在外面包含一层template,template不会显示 -->
<template v-if="ok">
  <h1>Title</h1>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
</template>
<!--  v-else-if -->
<div v-if="type === ‘A‘">
  A
</div>
<div v-else-if="type === ‘B‘">
  B
</div>
<div v-else-if="type === ‘C‘">
  C
</div>
<div v-else>
  Not A/B/C
</div>

key管理可复用的元素

下面例子中,input如果没有添加key,会复用,切换时,用户输入的值,会保留,只是替换了placeholder

添加了唯一值key,input是两个独立的,每次切换时,都会重新渲染

<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>

v-show    v-show始终渲染,只是切换display属性,不支持<template>元素

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

v-if与v-show的区别

  • v-if只有当满足条件时,才会被渲染。v-show是一直都会渲染且存在。
  • v-if会销毁和重建。v-show并不会销毁,只会切换css的display属性。
  • 如果运行时条件很少改变,则使用v-if。如果会频繁切换,则使用v-show。

2.列表渲染

v-for   v-for指令根据一组数组的选项列表进行渲染。绑定key:key 防止重用和重新排序现有元素

渲染数组

item in items语法,可以使用 of 代替 in,支持可选的第二个参数 (item, index) in items

<ul id="example-1">
  <li v-for="item in items"  :key="item.id">
    {{ item.message }}
  </li>
</ul>
<!-- 带index -->
<ul id="example-2">
  <li v-for="(item, index) in items">
    {{ parentMessage }} - {{ index }} - {{ item.message }}
  </li>
</ul>
var example1 = new Vue({
  el: ‘#example-1‘,
  data: {
    items: [
      { message: ‘Foo‘ },
      { message: ‘Bar‘ }
    ]
  }
})

v-for和v-if

当v-for和v-if处于同一节点时,v-for的优先级比v-if的优先级高。如果你是有条件的跳过循环的执行,可以将v-if置于外层元素(或<template>)。

<li v-for="todo in todos" v-if="!todo.isComplete">
  {{ todo }}
</li>
//只显示未完成的todo
<ul v-if="todos.length">
  <li v-for="todo in todos">
    {{ todo }}
  </li>
</ul>
<p v-else>No todos left!</p>
//置于外层循环

渲染对象

value in object方法,支持第二个参数key和第三个参数index

<div v-for="(value, key, index) in object">
  {{ index }}. {{ key }}: {{ value }}
</div>
new Vue({
  el: ‘#v-for-object‘,
  data: {
    object: {
      firstName: ‘John‘,
      lastName: ‘Doe‘,
      age: 30
    }
  }
})

原文地址:https://www.cnblogs.com/zsj-02-14/p/10483367.html

时间: 2024-07-31 20:34:01

vue渲染的相关文章

vue渲染数据后与owlCarousel轮播插件冲突,失效

主要原因:dom解析准备完成后,开始执行$(document).ready(); 而vue是在window.onload(页面加载完后才执行):所以会导致owlCarousel插件失效. 解决方案:数据渲染后,更新dom:再调用插件.(vue的 this.$nextTick可以更新dom) 1.引入owlCarousel插件,vue,jq (function ($) { new Vue({ el: '#owl-demo1', data:{ aboutData:[], getRouteUrl: '

vue渲染过程的{{xxx}}显示

这是由于浏览器的渲染机制导致的,浏览器是从头到尾  如果你的js引用在底部,那么浏览器会先加载dom此时,你用于渲染的{{}}识别符,因为还没读到该识别符对应的js文件,所以会被解析为字符串而显示在页面中,我们可以用过自定义属性v-cloak解决, 实例对象对应标签中加入 v-cloak: <div id="wrap" v-cloak> 然后在css中给定义属性选择器 [v-cloak]{ display:none } vue实例创建完成后会把v-cloak去掉,在没创建实

vue渲染数据模拟

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app-6"> <div v-for="item in msg" style="borde

Vue:渲染、指令、事件、组件、Props、Slots

如果要我用一句话描述使用 Vue 的经历,我可能会说“它如此合乎常理”或者“它提供给我需要的工具,而且没有妨碍我的工作”.每当学习 Vue 的时候,我都很高兴,因为很有意义,而且很优雅. 以上是我对 Vue 的介绍.在我第一次学习 Vue 的时候,我就想要这样的文章 我喜欢 Vue 的一点是它吸取了其它框架的优秀之处,并有条不紊的将它们组合在一起. 具有响应式组件化的虚拟 DOM 只提供视图层, props 和 类 Redux 状态管理与 React 类似. 条件渲染和服务与 Angular 类

Vue:渲染、指令、事件、组件、Props

如果要我用一句话描述使用 Vue 的经历,我可能会说"它如此合乎常理"或者"它提供给我需要的工具,而且没有妨碍我的工作".每当学习 Vue 的时候,我都很高兴,因为很有意义,而且很优雅. 以上是我对 Vue 的介绍.在我第一次学习 Vue 的时候,我就想要这样的文章 我喜欢 Vue 的一点是它吸取了其它框架的优秀之处,并有条不紊的将它们组合在一起. 具有响应式组件化的虚拟 DOM 只提供视图层, props 和 类 Redux 状态管理与 React 类似. 条件渲

5月9日——vue渲染过程的{{xxx}}显示

异常显示的原因: 这是由于浏览器的渲染机制导致的,浏览器是从头到尾  如果你的js引用在底部,那么浏览器会先加载dom此时,你用于渲染的{{}}识别符,因为还没读到该识别符对应的js文件,所以会被解析为字符串而显示在页面中 解决方案: 可以用过自定义属性v-cloak解决, 第一步:在css中给定义属性选择器          [v-cloak]{  display:none } 第二步:在对应标签中加入 v-cloak:         例如:<div id="wrap"  v

vue 渲染函数&amp;jsx

前端更新状态,更新视图,所以性能问题主要由Dom操作引起的,而js解析编译dom渲染就要快得多,  所把要js和html混写. vue 的动态js操作 html  方法:reader函数: vue  虚拟dom原理  +jsx ========================= <h1>{{bigTitle }}</h1> 渲染函数: reader:function(createElement){ return createElement('h1',this.bigTitle);

从vue渲染想到的数组方法

1 <div id="app"> 2 <ul> 3 <li v-for='item in goods'>{{item}}</li> 4 </ul> 5 6 <div>{{a}}</div> 7 8 <button v-on:click='demo'>click</button>//由于js的弱点导致的,vue无法检测到数组内部的变化,只能检测到地址变化 9 </div>

Vue 渲染函数

Vue 推荐在绝大多数情况下使用模板来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编程的能力.这时你可以用渲染函数,它比模板更接近编译器. 一 项目结构 二 App组件 <template> <div id="app"> <fruit fruitName="Durian" :level="2"> very delicious! </fruit> </div&g