在react或vue中,for循环用Index作为key值是好还是坏呢?

React 与 vue的基本实现原理是通过对比两次虚拟dom的不同 然后直接操作不同的dom

当以数组的下标index作为key值时  其中一个元素发生了变化 就有可能导致所有元素的key值发生改变  diff算法是比较同级之间的不同  以key来进行关联  当对数组进行下标的变换时,比如删除第一条数据,那么以后所有的Index都会发生改变,那么key自然也跟着全部发生改变, 所以index作为key值是不稳定的,这种不稳定性有可能导致性能的浪费 导致diff无法关联起上一次一样的数据  因此 能不用Index作为key就不要用Index

原文地址:https://www.cnblogs.com/Aaron1Tall/p/11041761.html

时间: 2024-08-03 13:23:47

在react或vue中,for循环用Index作为key值是好还是坏呢?的相关文章

VUE中演示v-for为什么要加key

说到这个问题想必要举个例子了 image 没有key <div id="app"> <div> <input type="text" v-model="name"> <button @click="add">添加</button> </div> <ul> <li v-for="(item, i) in list">

springboot中处理mybatis返回Map时key值的大小写

为了统一不同数据库返回key值大小写不一致的问题,特自定义ObjectWrapperFactory来做统一的处理 1,首先自定义MapWrapper /** * 将Map的key全部转换为小写 * */ public class MapKeyLowerWrapper extends MapWrapper { public MapKeyLowerWrapper(MetaObject metaObject, Map<String, Object> map) { super(metaObject,

vue中动态循环model

vue动态循环model与angular有所不同,angular直接定义一个数组,然后传入循环列表的index即可. 而vue不仅需要定义一个数组,还需要通过接口读出循环的数组长度,然后在create中先创建出来. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javas

vue中v-for循环如何将变量带入class的属性名中

https://blog.csdn.net/qlwangcong518/article/details/88648303 原文地址:https://www.cnblogs.com/namehou/p/11320263.html

Java中对listmap根据map某个key值进行排序

Collection提供了排序方法sort(),但对于List<Map> 需要根据Map中某一个或某几个Key进行排序,就需要重写sort()方法来实现了: 实现方式如下: public static void main(String[] args) { List<Map<String, String>> list = new ArrayList<Map<String, String>>(); Map<String, String>

jsp循环map map的key值不固定

<c:if test="${not empty parammap}"> <c:forEach items="${parammap }" var="map"> <c:forEach items="${map.key}" var="key" varStatus="s"> <input type="hidden" name=&quo

vue中简单的小插曲

我们现在来学习一下vue中一些简单的小东西: 首先我们必须要引入vue.js文件哦! 1.有关文本框里的checkbox js代码: new Vue({ el:"#app", data:{ mag:" " } }) html代码: <div id="app"> <input type="checkbox" v-model="mag"> <h1>{{mag}}</h1

在 React、Vue项目中使用 SVG

在一些现代的扁平化设计网站,特别是移动端网站,经常会包含许多简单而清晰的小图标,例如网站图标.用户的默认头像.移动端网页首页底部固定的切换栏等,这些小图标一般都是由美工做好,可能会放到精灵图上,前端再进行裁切展示. 而实际上,这些简单的小图标完全没必要让美工来做,前端完全可以通过 svg使用代码把这些简单的图标画出来,并且,因为这些图标是用代码描述出来的,所以如果想要修改这些图标,例如改变图标的颜色.图标的形状.大小等,都只是改几行代码的事情,非常简单,根本无需美工返工重做. 本文不是阐述如何利

vue的 v-for 循环中图片加载路径问题

先看一下产品需求,如下图所示, 产品要求图片和它的名称一一对应,本来是非常简单的需求,后台直接返回图片路径和名称,前台直接读取就可以了,但是我们没有存储图片的服务器,再加上是一个实验性的需求,图片需要存放到前台.当时我想,vue 中的img 的src 可以动态绑定到一个变量上, 很简单吗,就没有考虑太多,直接开始做了. 首先和后台商量一下数据结构,因为图片要和名称一一对应,所以后台要返回中英文的名称的映射,我把前台的图片名称直接设置给后台给的英文名称,从而读取图片,图片和中文名称就一一对应了.数