首页 > 其他分享 >React Key的作用

React Key的作用

时间:2023-02-02 11:35:10浏览次数:37  
标签:react Key dom 渲染 React item key 组件 作用

一、key的作用:

  1. 主要是对DOM渲染的性能优化,用来减少没必要的diff算法对比。当列表顺序发生改变时,如果不加key,不管数据是否发生改变,所有列表元素都会重新渲染,当列表元素没有发生改变时,值是在末尾产生新的元素,此时key的值加不加都是可以的,React只会渲染最后一个元素。如图:

 

假如说,本来一个 list 里面有 3 个相同的组件,后来你单击按钮,靠 setState 给这个 list 又增加了一个同类型的组件。假如没有 key 的话,react 会认为左侧图的前三个组件和右边图的前三个组件并不是一一对应的,它会把这三个组件从 dom 树上摘下来,然后再把这三个组件放到 dom 树上,最后再把第四个组件放到 dom 树上,也就是 3 次移除操作,4次增加操作。操作了 7 次 dom。但是,如果你给这三个组件,以 id 的形式赋给它们 key 值。那么 react 会认为,前三个组件都还在 dom 树上,因为 react 通过 key 值当做组件的唯一标识符。因此,react 只需要把第四个组件放到 dom 树上即可,只操作了一次 dom。

流程图大概如下: 2. 一个数组循环范围内,key值要求唯一,且不会变化,推荐用数组中唯一的id或身份证号等作为key值。 3. 适用index作为key的情况:列表翻页用于常规展示等。

二、开发注意事项:

1. 不加key值,浏览器会报错,但是不影响运行,但是性能会较差。具体原因同上述。

2. key={item},如果当item是数值时候此时必报错,组件渲染还有可能会异常; 案例场景:渲染数字卡片异常     

  

实际上只有210人,切换楼栋重新请求时,数值更大了,由此联想到,数值需要谨慎处理,如果是银行及金融类项目涉及金额,影响很大

标签:react,Key,dom,渲染,React,item,key,组件,作用
From: https://www.cnblogs.com/shyhuahua/p/17085432.html

相关文章

  • React 中ref 的使用
    场景:类组件、函数组件、forwardRef、useImperativeHandle 详解 前言在一个父组件中,我们想要获取到其中的节点元素或者子组件实例,从而直接调用其上面的方法。Class......
  • 一篇文章带你了解KendoReact DateRangePicker,让日期选择变得更酷炫!
    KendoUI致力于新的开发,来满足不断变化的需求。现在我们非常自豪地宣布,通过React框架的KendoUIJavaScript封装来支持ReactJavascript框架。KendoReact能够为客户提供更......
  • jdk的keytool生成jks和获取jks的信息,公匙
     1.生成jks。执行命令:keytool-genkeypair-aliasmytest-keyalg RSA-keypassmypass-keystoremytest.jks-storepassmypass-keystorejks文件保存路径生成......
  • keyboard_shortcuts
    内核以下是系统底层的快捷键,通常被用于调试。遇到系统问题,请尽可能尝试这些快捷键,而不是按住电源开关强制关机。这些快捷键需要首先使用如下命令激活echo"1">/proc/s......
  • 路由react-router-dom的使用
    react-router-dom路由简介现代的前端页面大多是SPA(单页面应用程序),也就是只有一个HTML页面的程序,这样用户体验好,服务器压力小,所以更受欢迎。路由是使用单页面来管理原来......
  • Vue、React 区分生产环境和开发环境
    1.手动切换exportconstBASE_URL='http://codercba.com:9002'//exportconstBASE_URL='http://codercba.prod:9002'exportconstTIME_OUT=100002.依赖当前......
  • React的受控组件与非受控组件
    收集表单数据受控组件在HTML中,表单元素(如input、textarea和select)通常自己维护state,并根据用户输入进行更新。而在React中,可变状态(mutablestate)通常保存在组件......
  • cra react18 ts 自定义hooks 单元测试
    首先创建cra项目如果报错说最新的create-react-app版本是5.x,而你的是4.x的话需要先卸载,再重新安装sudonpmuninstall-gcreate-react-appsudonpminst......
  • react的合成事件
    react自己有一套自己的事件机制,它在DOM事件体系基础上做了改进,减少了内存消耗,并且最大程度的消除了ie等浏览器的不兼容问题。它的特点有以下几个:react上注册的事件最终会......
  • 内核参数的作用域学习
    内核参数作用域的情况1.全系统生效2.进程生效3.用户生效4.协同作用.#本文并不会按照范围进行单独阐述#会按照一个作用链条进行说明.nofilenumberoffile......