| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 在Vue中为什么v-for一定要加key -> 正文阅读 |
|
[JavaScript知识库]在Vue中为什么v-for一定要加key |
如果你已经很熟悉Vue,一定也会很熟悉 我在刚开始写Vue时,也很少去写key 属性,因为它也不是必需的,不写也不会报错,也不会耽误数据渲染。但当项目中配了ESLint的规则,必需要写key时,我就统一的都把
术语解读那为什么我们需要在 其实是因为Vue可以通过 像Vue文档所说的那样,我们要尽可能使用数据的唯一ID来做每个元素的key,这样 Vue 可以更准确地追踪数组中项目的更改并更新组件状态,并且能够重用和重新排序现有组件,而不必重新渲染整个循环。 举例说明上面说了那么多可能比较官方,还是不容易理解,下面我们通过一个例子来展示 假设我们有一个图书列表,然后有一个
组件展示这本书的书名,以及这本书是否能被购买。 组件的JavaScript部分:
我们通过props将书的信息传入,然后假设我们需要单独调用接口去查询这本书的状态,是否可以被购买。 然后循环出图书列表:
完整的在线例子地址:https://codepen.io/cmdfas-the-bashful/pen/yLoEmJq 这看起来并没有什么问题,在页面展示上也没有什么问题。到这里就结束了?并没有 假设用户可以向系统添加一本新书,并要求添加到列表顶部,而不是底部。如果添加到底部,不会有什么问题,因为index索引仍然是新的值,如果添加到列表顶部,那新加到顶部元素的索引将会之前第一本书的索引也就是0,依次类推,只有最后一本的索引为新索引。 能看出这里可能存在什么问题吗?如果Vue没有正确地将第一个索引追踪为新索引,那该组件永远不会重新挂载,所以 那么要解决这个问题最简单的方式就是设置唯一的key值,我将
总结明白了其中的原理,我们可以根据场景去选择使用v-for和key,如果只是将数据插入到数组末尾,或者只是简单的列表,那使用索引不会产生什么问题,因为没有排序,Vue可以正确的追踪到新的索引。这是一种很好的处理方式(也是 Vue 使用的默认方式)。 但是,当你带有props的组件中拥有组件自己的状态时,或者不只是在末尾添加内容的方式改变列表时,一定要使用唯一的id。 同样,有关 v-for 中使用的更多有用信息,建议查看 Vue 官方文档。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 15:26:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |