react virtual DOM 给元素加key的作用

98 阅读1分钟

当给一个元素加key prop时,diff时会判断new tree跟old tree的可以是否相同,相同时不会移除元素销毁组件,会复用他们

<ul>
  <li key="2015">Duke</li>
  <li key="2016">Villanova</li>
</ul>

<ul>
  <li key="2014">Connecticut</li>
  <li key="2015">Duke</li>
  <li key="2016">Villanova</li>
</ul>

加上key之后,li元素只是移动了位置,新元素才会新创建; 不加key的话,遍历第一个元素,内容不一样,把 Duke 改为 Connecticut,一直遍历到最后一个,数据量大的情况下,会耗性能。