React 中diffing 算法理解

5 篇文章 0 订阅
本文详细解析了React框架中的diffing算法,指出其最小颗粒度为标签,并强调了状态变化触发render函数的重要性。key属性在列表渲染中扮演关键角色,用于提高虚拟DOM的比较效率。不建议使用index作为key,因为它可能导致不必要的DOM更新,影响性能。最佳实践是使用数据的唯一标识(如id)作为key,确保高效渲染。在开发中,应根据数据操作类型选择合适的key,以优化应用性能。
摘要由CSDN通过智能技术生成
React 框架中diffing 算法的理解:
1:  diffing 算法最小颗粒度是标签  (只可以精确到标签的位置)
    diffing 算法最小颗粒度是标签  (会一直递归循环遍历下去)
 
2:只要状态改变就会触发 render 函数 (实时修改状态)  (状态修改就会触发render函数);
在React/Vue 中 key属性有什么作用? (index 的内部原理是什么?)

3: 为什么办理列表时: key 属性最好不要使用index?
   1: 虚拟DOM 中key属性的作用:
   (1): 简单的说: key属性是虚拟DOM对象的唯一标识, 在更新显示时key 属性起着重要的作用。
   (2): 详细的说: 当状态数据发生变化的时候, React 会根据[新数据] 生成的[新的虚拟DOM]
   (3): 随后React 进行 [新虚拟DOM] 与 [旧虚拟DOM] 的diff 比较, 比较规则如下:
     a: 旧虚拟DOM中找到了与虚拟DOM 相同的key值:
       1): 如果虚拟DOM中内容没有发生变化, 直接使用之前的真实DOM
       2): 如果虚拟DOM 中内容发生了变化, 则生成新的虚拟DOM,  随后替换掉页面之前的真实的DOM
     b: 旧虚拟DOM 中未找到与新虚拟DOM 相同的key 值
        根据数据创建真实的DOM,  随后渲染到页面

   2: 如果使用index 作为key值可能会引发的问题:
     1: 如对数据进行: 进行逆序添加, 逆序删除等破坏操作:
        会产生没有必要的真实DOM 更新 ===> 界面效果没有问题, 但是效率低。
     2: 如果结构中还有包含输入的类DOM;
        会产生错误的DOM更新  ===> 界面有问题。
       
     3: 注意: 如果不存在对数据的逆序添加, 逆序删除等破坏顺操作
        仅用于渲染到页面用于展示, 使用index 作为key 是没问题的。

     4: 开发中如何如何选择key 值:
        1: 最好使用每一条数据唯一标识作为key 值, 比如:id 值,
        2: 如果确定只是简单展示数据,  使用 inde 也是可以的。
------------------------------------------------------------------------
使用index 作为 key 属性的节点效率会低,  所有的DOM节点会渲染一边。效率会降低。
但是使用 key 属性使用id 值, 虚拟DOM 渲染效率会高。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值