2 Matching Annotations
  1. Jun 2024
    1. Keys

      diff算法中关于key的两个问题

      1.如果列表元素中不指定key属性,会有什么问题?

      1.1 如果从列表尾增加元素直接插入,如果从列表头增加元素就需要重新构建整个列表元素子树。(从非尾部操作会导致后续一致的部分无法复用,会有一定的性能问题)

      1.2 如果插入两个类型一致,值一致的节点,在删除时,会同时删除两个节点。

      2.如果列表元素中用idx作为key属性,会有什么问题?

      2.1 从非列表尾部操作(增、删、改)会导致渲染错误。

      2.1.1 增:最后一个元素显示两次

      2.1.2 删:最后一个元素不显示

      2.1.3 改:改了没效果

    2. The developer can hint at which child elements may be stable across different renders with a key prop.

      开发者可以用key属性标记在不同渲染中哪些子元素是可能稳定的