由于这个是一个 warning ,很多同学在开发中可能会忽略或者是屏蔽调这样一个警告,那究竟加不加这个 key 属性会有什么不一样?它的作用又是什么。...React 中的 element diff 算法
当在数组或者迭代器中循环渲染元素的时候,其实是用到了 React 的 element diff 算法,,当节点处于同一层级时,React diff 提供了三种节点操作...举个例子,有以代码,
// props.dataLists = ['a', 'b', 'c', 'd'];
const dataList = props => {
...c,d;
old: a, b, c, d
new: b, a, d, c
假设这里有10000个 elements, 这里的开销大到不能想象,而且仔细的你可能已经发现了,其实上面的 element并没有发生变化...另外,看 Babel 转换 jsx 后,也很好理解为什么通过 key 可以分辨出 变化前后 element 的关系,为什么只有数组需要key。