手把手带你理解Vue的列表渲染?

2023-11-12

  1. 概念

 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。 

     2. 代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="(value,index) in datalist " :key="index">
                {{value}}--{{index}}
            </li>
        </ul>
    </div>
    <script>
        var vm = new Vue({
            el:'#app',
            data:{
                datalist:['aaa','bbb','ccc']
            }
        })
    </script>
    
</body>
</html>

 最后输出li列表aaa,bbb,ccc

3. key

当 Vue 正在更新使用 v-for 渲染的元素列表时,它默认使用“就地更新”的策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序,而是就地更新每个元素,并且确保它们在每个索引位置正确渲染。

这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key attribute。

建议尽可能在使用 v-for 时提供 key attribute,除非遍历输出的 DOM 内容非常简单,或者是刻意依赖默认行为以获取性能上的提升。

因为它是 Vue 识别节点的一个通用机制。

key的做用:

  • 跟踪每个节点的身份,从而重用和重新排序现有元素
  • 理想的key是每项都有且唯一的id。

 4. 数组更新检测

Vue 将被侦听的数组的变更方法进行了包裹,所以它们也将会触发视图更新。这些被包裹过的方法包括:

push()   pop()  shift() unshift()  splice()  sort()  reverse()

使用以上方法变更数组可以检测到数组变动。

filter()  slice()  concat() 这三种方法也可以,本质上是用新数组替换旧数组。

注意:

使用数组的索引赋值是不能检测到数组变化的,如:

vm.items[index] =newVal;

解决方法:

Vue.set(vm.items,index,newVal);   

或则 vm.items.splice(index,num,newVal);

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手带你理解Vue的列表渲染? 的相关文章

  • 如何在 Vuejs 中加载 Pixi 实例?

    我正在 VueJS 组件中学习 PixiJS 如下所示Pixi教程 https github com kittykatattack learningPixi我控制台显示此错误 vue runtime esm js 2b0e 619 Vue
  • 我应该如何处理 Vuex 中的事件?

    我习惯使用全局事件总线来处理跨组件方法 例如 var bus new Vue Component A bus emit DoSomethingInComponentB Component B bus on DoSomethingInComp
  • 使用 jquery-chosen 插件更新 vuejs 模型值

    尝试使用jquery 选择 http harvesthq github io chosen 使用 vue 问题是这个插件隐藏了我应用的实际选择v model 所以当我选择一个值时 vue 不会将其识别为选择更改事件 并且模型值不会更新 当我
  • Vue Router - 使用 Vue 2 Composition API 获取路由参数

    我正在使用Vue 2 组合 API https github com vuejs composition api并想从我的 Vue Router 访问路由参数setup method 如中所述Vue 路由器文档 https next rou
  • Vuejs2 Modal 与 vue-router 中的路线

    我正在尝试使用模态创建一条路由 当您使用路由器链接访问此路由器路径时 会在当前页面上方显示一个模态 或者如果我直接从 url 访问 则会出现上面带有模态的索引 例如 我在http localhost 个人资料 1 http localhos
  • 如何在卡组bootstrap vue上设置行列?

    我的 vue 组件是这样的
  • 如何在 Nuxt 中点击链接下载文件?

    我遇到了一个边缘情况问题 如果用户浏览几条 Nuxt 路线 单击网站 徽标 这是一个锚标记返回主页 然后单击浏览器本机后退按钮 最后单击一个应该的链接要打开 pdf 它会重定向到我的 404 页面 如果用户在页面加载时单击 pdf 链接 它
  • 如何在Vuejs中动态管理页面标题?

    我构建一个应用程序 我有一个带有页面标题的标题 目前 我使用视图路由器来定义我的标题 path events name events component Events meta title Liste des v nements 在我的刀片
  • 如何使用vue.js获取点击时按钮的值

    我在页面上有几个按钮 它们连接到相同的方法webcamSendRequestButton
  • Vue 3 控制台中的 Proxy 是什么意思?

    我正在对数组进行洗牌 并在控制台中收到一条奇怪的消息 我的 JSON 文件如下所示 id 1 name Sushi image https images pexels com photos 1640777 pexels photo 1640
  • Laravel Echo 不监听推送事件

    尝试使用 laravel 和 vuejs 创建一种聊天应用程序 发送消息后 我会从 laravel 触发事件 该事件会使用正确的事件类反映在推送器调试控制台上 但根本不会调用来自 vuejs 的监听回调 created window Ech
  • 如何修复套接字 io 中的 400 错误错误请求?

    我有一个前端应用程序 VUE JS 我有一个后端 Nest JS Vue JS 应用程序使用 vue socket io extended 库通过 websockets 从后端获取数据 当 Vue JS 应用程序启动时 我在浏览器中看到错误
  • Vue.js 更改 {{ }} 标签

    我想改变 something by 在 Vue js 中 我怎样才能实现这一点 这可能吗 我在 AngularJS 中寻找的等效项 var app angular module app function interpolateProvide
  • Vue js - 在同一级别的两个组件内传递数据

    我有需要从一个传递的数据component1到另一个component2 我不使用vuex or router 组件树 Parent Component1 Component2 从一开始component1我发出 ajax 请求 检索信息并
  • 有没有V型斗篷的反面?

    根据VueJS 文档 https v2 vuejs org v2 api v cloak v cloak 指令可用于隐藏未编译的 Mustache 绑定 直到 Vue 实例准备就绪 换句话说 我可以隐藏一个div或类似的东西 当 vue 准
  • 如何以编程方式启动 Vuetify 对话框并等待响应

    我对 Vue js 和 Vuetify 相当陌生 使用 AngularJS 好几年了 但我们公司正在转向 Vue js 我想要完成的是 当用户单击 登录 按钮时 它会执行一些检查 即用户名不能为空 并启动 Vuetify 对话框来提醒用户
  • 从组件传递数据

    我对 Vue 相当陌生 我正在尝试将数据从组件传递到视图 我不确定我是否在使用props正确的 我有一个对话框 当我保存时 我想将数据插入数据库 我也想重复使用addCustomer function 这就是为什么我没有将该函数放置在组件中
  • Vue 监听 Vuex 提交吗?

    有没有一种方法可以监听 Vuex 提交 而不观察任何随提交而更改的属性 只是简单地找出是否发生了提交 我有一个 Filter 组件 想将其放入 NPM 包中 但我已经有一个用例 在该用例中 我希望设置一个 cookie 在选择过滤器时存储过
  • 用变量字符串设置槽的简单方法?

    有许多slot例子 但没有克莱尔和简单 因为我需要 我需要类似的东西 var x Hello slot x 这就是我需要的 在一个具体的例子中 https jsfiddle net 2qdh3x3v https jsfiddle net 2
  • 在 Vue.js 中隐藏 div onclick

    以下 jQuery 的 Vue js 等价物是什么 btn click function hideMe hide jQuery 开箱即用 而 Vue js 则不然 要初始化 Vue js 组件或应用程序 您必须将该组件及其数据绑定到模板内的

随机推荐

  • 包装类这颗语法糖,其实并不甜

    历史文章推荐 你真的了解时间吗 细数ThreadLocal三大坑 内存泄露仅是小儿科 Java 8 ConcurrentHashMap源码中竟然隐藏着两个BUG ConcurrentHashMap中有十个提升性能的细节 你都知道吗 Hash
  • 2023年及以后语言、视觉和生成模型的发展和展望

    一 简述 在过去的十年里 研究人员都在追求类似的愿景 帮助人们更好地了解周围的世界 并帮助人们更好地了解周围的世界 把事情做完 我们希望建造功能更强大的机器 与人们合作完成各种各样的任务 各种任务 复杂的信息搜寻任务 创造性任务 例如创作音
  • 如何在jieba分词中加自定义词典_R-数据挖掘

    一 jiebaR主要函数 1 worker 加载jiebaR库的分词引擎 worker type mix dict DICTPATH hmm HMMPATH user USERPATH idf IDFPATH stop word STOPP
  • 少儿编程竞赛概览

    少儿编程竞赛概览 全国性竞赛活动名单的确定 最终确定的 29 项中的信息类竞赛 学编程的孩子可以报哪些比赛 CSP J S 计算机非专业组别能力认证 全国中小学生创 造大赛 蓝桥杯青少年创意编程比赛 全国青少年编程创意与智能设计大赛 全国中
  • Ubuntu系统操作指令详解

    Ubuntu系统操作指令详解 解压文件指令 vim使用指令 1 进入编辑模式 2 退出编辑模式 ls alh显示出来内容的意思 创建文件夹 创建文件 删除当前文件夹下所有文件 ubuntu删除命令记录的方法 Ubuntu中复制文件出现权限不
  • 从malloc中窥探Linux内存分配策略

    malloc函数是C C 中常用内存分配库函数 本篇文章将以Linux平台上的malloc为剖析对象 深入了解分配一块内存的旅程 malloc入门 使用malloc 需要包含头文件 stdlib h 函数原型如下 extern void m
  • utf8和utf8mb4的区别

    一 简介 MySQL在5 5 3之后增加了这个utf8mb4的编码 mb4就是most bytes 4的意思 专门用来兼容四字节的unicode 好在utf8mb4是utf8的超集 除了将编码改为utf8mb4外不需要做其他转换 当然 为了
  • c#之string和stringBuilder

    C String与StringBuilder 转载 1 什么时候用String 什么时候用StringBuilder 字符串一旦创建就不可修改大小 所以对字符串添加或删除操作比较频繁的话 那就不要用String而用StringBuilder
  • 【java8的特性-4】日期时间!

    一 获取当前时间 Java 8提供了三个主要的类来处理日期和时间 LocalDate LocalTime和LocalDateTime 以下是这些类的简要说明 LocalDate 代表一个日期 它包含了年 月 日等信息 但没有时间信息 Loc
  • 第四章:SQL Server2019数据库 之 综合案例练习、 使用SQL语句插入数据、更新和删除数据

    目录 一 综合案例 数据表的基本操作 二 插入数据 1 插入单行数据 2 插入多行数据 3 表中数据的复制 三 更新和删除数据 1 UPDATE 语句 2 DELETE 语句 学前必备知识 第一章 SQL Server 数据库环境搭建与使用
  • Linux 系统sudo apt-get update出错E: Problem executing scripts APT::Update::Post-Invoke-Success

    Ubuntu系统运行 sudo apt get update时报错如下 E Problem executing scripts APT Update Post Invoke Success if usr bin test w var cac
  • Java安全入门(二)——CC链1 分析+详解

    组件介绍 Apache Commons 当中有 个组件叫做 Apache Commons Collections 主要封装了Java 的 Collection 集合 相关类对象 它提供了很多强有 的数据结构类型并且实现了各种集合工具类 作为
  • 禁用Android切换动画

    禁用Android切换动画 前言 最近有个功能要禁用安卓activity的切换动画 找了几个方法 这里记录下 使用Theme 最简单的就是设置没有动画的主题了 在activity上增加notAnimation的theme属性 android
  • 4.5.7 c++求灯塔数量

    4 5 7 灯塔数量 有一八层灯塔 每一层的灯数都是上一层的一倍 共有765盏灯 求最上层和最下层的灯数 include
  • C++:map&&set的简单使用

    目录 关联式容器 键值对 树形结构的关联式容器 set find与count multiset map multimap 关联式容器 在初期我们接触到的vector list deque queue等 这些容器都称为序列式容器 因为其底层为
  • python for循环九九乘法表_python初学者-使用for循环做一个九九乘法表

    原博文 2020 03 22 08 51 for i in range 1 10 for j in range 1 i 1 print j i i j end end 以 结尾 print 相关推荐 2019 12 24 10 44 whi
  • 自学SQL习题答案整理(lesson4--)

    前几天看到一个学SQL的网站 感觉挺好的 但是比较少人用 链接 自学SQL 在这里放上一部分题目的答案 自己在mysql里实现了一下 方便以后再做这个练习的时候自查 主要是学习一些查询语句的运用 SELECT distinct direct
  • 力扣算法合集

    algo 鸡汤篇 排序算法 二叉树 哈希表 栈和队列 数组 链表 字符串 算法套路 双指针 排序 贪心思想 二分查找 搜索 动态规划 斐波那契数列 矩阵路径 数组区间 分割整数 最长递增子序列 01背包 股票交易 字符串编辑 算法题解 动态
  • 突破Cloudflare验证码的秘密方法

    Cloudflare是一种广泛使用的验证码方式 它旨在取代传统的CAPTCHA 提供更简单 更私密的验证方式 以区分真实用户和机器人 然而 对于爬虫工程师而言 这也带来了一些挑战 理解Cloudflare验证码的工作原理 在突破Cloudf
  • 手把手带你理解Vue的列表渲染?

    概念 v for 指令基于一个数组来渲染一个列表 v for 指令需要使用 item in items 形式的特殊语法 其中 items 是源数据数组 而 item 则是被迭代的数组元素的别名 2 代码