zoukankan      html  css  js  c++  java
  • 写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么

    怼一波,在项目中有很多经常用到,但又含糊不清的知识点

    框架中的key:

        1. 为啥在遍历元素时要用 key :在开发过程中为了保证遍历同级元素的唯一性,用来提高更新 dom 的性能;

        2. 凭啥要保证元素的唯一性:从原理上来说就是框架会通过 key 来判断元素是否需要重新渲染,即 key 唯一则可保证元素唯一,key的作用就是更新组件时判断两个节点是否相同。相同就复用,不相同就删除旧的创建新的。

        3. 硬刚会有啥的问题:

    1. 如果遍历渲染的数据变化量大,例如通过 socket 推送的实时数据,会导致数据最前一列数据展示为空,对于大多数场景来说,列表组件都有自己的状态。;
    2. 如果遍历渲染数据输入框 <input /> , 可能导致无法准确定位到 input,获取不到预计的value值;
    3. 如果是导致第一次执行循环体,可能会导致初始化失败,第一次执行初始化循环体失败是什么鬼,我反正没遇到过;

        4. 总结:如果你非要正面刚,除非你能保证遍历的元素值是不会发生变化的,用户不输入或者服务器数据也不变化;

     5. 提供一个生成唯一key的函数

      

    function getUuid () {
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace (/[xy]/g, c => {
          let r = (Math.random () * 16) | 0;
          let v = c == 'x' ? r : (r & 0x3) | 0x8;
          return v.toString (16);
        });
      }

      欢迎关注博主:微信公众号交流

  • 相关阅读:
    完结篇《产品在路上》
    产品经理的七个层次
    互联网产品的交互设计
    互联网产品的用户体验
    用户体验设计 UED (下)
    用户体验设计 UED (上)
    【100Days of 100 line Code】1 day
    leetcode 392.判断子序列(Java 贪心)
    leetcode 605.种花问题(java 贪心)
    leetcode 122.买卖股票的最佳时机||(Java 贪心)
  • 原文地址:https://www.cnblogs.com/ChineseLiao/p/11430454.html
Copyright © 2011-2022 走看看