当前位置: 首页 > news >正文

React-在使用map循环数组渲染列表时须指定唯一且稳定值的key

在渲染列表的时候,我们须给组件或者元素分配一个唯一值的key, key是一个特殊的属性,不会最终加在元素上面,也无法通过props.key来获取,仅在react内部使用。react中的key本质是服务于diff算法, 它的默认值是null, 在diff算法过程中, 新旧节点是否可以复用, 首先就会判定key是否相同, 其后才会进行其他条件的判定(如节点类型,props),从而提升渲染性能,减少重复无效渲染。

  • 为什么在渲染列表组件的时候,为什么不能将index设置为key?

因为显式地把index设为key,和不设置key的效果是一样,这就所谓的就地复用原则,即react在diff的时候,如果没有key,就会在老虚拟DOM树中,找到对应顺序位置的组件,然后对比组件的类型和props来决定是否需要重新渲染。index作为key,不仅会在数组发生变化的时候,造成无效多余的渲染,还可能在组件含有非受控组件 (如input)的时候,造成UI渲染错误。

  • 如果渲染列表的时候,key重复了会怎么样?

首先react会给你输出警告,告诉你key值应该是唯一的,以便组件在更新期间保持其标识。重复的key可能导致子节点被重复使用或省略,从而引发UI bug。

http://www.xdnf.cn/news/24895.html

相关文章:

  • 零、HarmonyOS应用开发者基础学习总览
  • Spring 学习笔记之 @Transactional详解
  • C++镌刻数据密码的树之铭文:二叉搜索树
  • X-AnyLabeling开源程序借助 Segment Anything 和其他出色模型的 AI 支持轻松进行数据标记。
  • Json 在线格式化 - 加菲工具
  • 《软件设计师》复习笔记(11.5)——测试原则、阶段、测试用例设计、调试
  • 回顾与动机 - 为什么我们需要 Transformer
  • 全国青少年信息素养大赛 C++算法创意实践挑战赛初赛 集训模拟试卷《七》及详细答案解析
  • 2048小游戏C++板来啦!
  • QT6 源(36):界面组件的总基类 QWidget 的源码阅读
  • 编程技能:调试03,逐过程命令与退出调试
  • 【实体转换】mapstruct详解
  • cmd查询占用端口并查杀
  • 论文阅读:2023 ICLR Safe RLHF: Safe Reinforcement Learning from Human Feedback
  • 第 4 期:DDPM中的损失函数——为什么只预测噪声?
  • 6.VTK 颜色
  • 驱动移植【简略版】
  • 从零开始学Python游戏编程30-类2
  • [Java · 初窥门径] Java 语言初识
  • C++动态分配内存知识点!
  • 锁(Mutex)、信号量(Semaphore)与条件量(Condition Variable)
  • 网络编程2
  • 第八周作业
  • alertManager部署安装、告警规则配置详解及告警消息推送
  • 工厂方法模式详解及在自动驾驶场景代码示例(c++代码实现)
  • Linux根据 PID 进行性能分析
  • 三格电子——PROFIBUS DP设备长距离传输和干扰问题解决办法
  • ffprobe 输出 HEVC 码流 Level:标准的 “错位” 与分析的 “归位”
  • javaweb-servlet-继承关系以及service方法、servlet生命周期
  • LabelImg打标工具的下载和使用——YOLO格式篇