首页 > 其他分享 >[Vue] vue学习笔记(3): 渲染

[Vue] vue学习笔记(3): 渲染

时间:2023-11-29 21:57:49浏览次数:31  
标签:Vue 渲染 对象 元素 else --- vue key

条件渲染

主要有四个指令

  • v-show:控制元素可视性,即是否增加样式display=none
  • v-if/v-else-if/v-else:类似if/else-if/else的逻辑结构,进行条件判断,控制元素的可视性,注意这种方法会直接决定元素是否出现DOM树上,而非样式改变
< !--- n is a property of vue instance --- >
<div v-if="n===1">Angular</div>
<div v-else-if="n===2">React</div>
<div v-else-if="n===3">Vue</div>
<div v-else>guess</div>
< !--- v-else needs no js expr --- >

template的使用

假设有复数个元素的可视性判断条件相同,可以使用template来统一控制,这种情况下只能使用v-if

< !--- n is a property of vue instance --- >
<template v-if="n === 1">
	<h2>Apple</h2>
	<h2>Banana</h2>
	<h2>Corn</h2>
</template>

列表渲染

使用v-for来遍历数组,对象,字符串或指定次数

<h2>遍历数组</h2>
<ul>
	<li v-for="(p, index) in people" :key="index">
		{{index}}: {{p.name}} - {{p.age}}
	</li>
</ul>
< !---  --- >
<h2>遍历对象 - js对象是由k-v键值对组成的</h2>
<ul>
	<li v-for="(v, k) in student" :key="k">
		{{k}} - {{v}}
	</li>
</ul>

key的作用

⬇️一图流说明key的作用⬇️

  • 以索引作为key❌
    解释:对于数组中的对象中来说,索引值并不是与其绑定的唯一标准。如图所示,由于数组更新后的第一条记录(即存储的对象)与先前的发生了变化,但是key值不变,而vue依据key值来判断是更新还是复用旧虚拟DOM上的元素
    ⚠️以第一条数据key='0'为例,其中的文本元素发生了变化,因此vue更新了其值;而输入框元素无变化,vue将选择复用旧DOM的元素,无论输入框内是否已经有输入的内容。以此类推,会得到一个错位的人员列表
    image

  • 以id为key(更好的效率,在此场景下推荐)✅
    解释:对象的id是作为识别对象的唯一标识的最好选择,依照vue根据key值排查元素的机制,这样做很好地保证了顺序性,避免了错位,也节省了资源--因为vue实际上只更新了最后也是最新的那一行数据
    image

  • 结论:由此可知,在没有逆序增加/删除元素的情况下,使用index是没问题的

标签:Vue,渲染,对象,元素,else,---,vue,key
From: https://www.cnblogs.com/Akira300000/p/17865059.html

相关文章

  • 瑞云科技参与《数字孪生世界白皮书》编写,实时云渲染助力数字孪生
    为了促进数字孪生技术的发展和应用,易知微与数字孪生世界企业联盟联合众多行业专家以及多家业内企业共同编写了《数字孪生世界白皮书(2023)》。该白皮书从数字孪生的综述、应用架构、核心技术、新型技术成果和重点行业应用等方面,全面系统地介绍了数字孪生世界的概念、价值、发展趋势......
  • vue.js(二)补充
    示例表单:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><scriptsrc="./js/vue.js"></script><title>Title</title></head><body><divclass......
  • 如何在一个html页面中引入vue跟axios
    如果想在HTML页面中引入Vue和Axios,可以按照以下步骤进行操作1、首页新建一个html页面2、打开vue官网进行引入或者下载vue.min.js包进行本地引入3、下载axios包,如下图所示4、在js部分中写的如下图所示5、axios使用......
  • [Vue] vue学习笔记(3): 绑定样式
    动态绑定样式vue允许动态设置class的值,通过利用v-bind指令......
  • Vuex
    Vuex用于状态管理状态管理模式:状态:驱动应用的数据源。state视图:以声明方式将状态映射到视图。操作:响应在仕途上的用户输入导致的状态变化。Vuex的状态存储是响应式的。不能直接改变store中的状态。从store实例中读取状态最简单的方法就是在计算属性中......
  • 使用vueuse 显示时间
    背景设计图里面包含一个日期显示的东西,查找下!网上很多都是使用js去写nonono使用vueuse快速实现一个两行代码能弄完,还需要那么多干嘛,下班!使用Vue3Marquee(vue3-marquee)......
  • 使用html文件渲染浏览器翻译json文件
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>PreTagExample</title&......
  • vue 创建 项目方式
    使用webpack创建vuecreatepageName资料https://cli.vuejs.org/zh/guide/使用vite创建npmcreatevue@latest资料https://cn.vitejs.dev/guide/clihttps://github.com/vuejs/create-vue......
  • vue Vite3出现错误runtime-core.esm-bundler.js:6835 Uncaught TypeError: normalize
    原因是在引入Element-Plus的顺序在vue之前导致,重新调整下他们的顺序后,问题解决。importAppfrom'./App.vue'import{setupI18n}from'/@/i18n'import{setupRouter}from'/@/router'import{setupStore}from'/@/store'importbusfrom'/@......
  • 手机直播源码,js实现懒加载、vue实现图片懒加载指令
    手机直播源码,js实现懒加载、vue实现图片懒加载指令图片懒加载监听滚动条滚动事件,当视口的高度+滚动高度,大于图片所在位置举例顶部的偏移量时(也就是距离),加载图片资源 index.html<!DOCTYPEhtml><html> <head>  <metacharset="UTF-8">  <metaname="viewport"conte......