从上一节babel的编译结果可以看出, 虚拟DOM中包含了创建DOM所需的各种信息, 对于首次渲染, 直接依照这些信息创建DOM节点即可.但虚拟DOM的真正价值在于“更新”: 当一个list中的某些项发生了变化...;通过设置 key 属性来标识一组同级子元素在渲染前后是否保持不变.在实践中, 以上两个假设在绝大多数场景下都成立.2.1 Diffling算法描述不同类型的元素/组件当元素的标签或组件名发生变化, 直接卸载并替换以此元素作为根节点的整个子树...key 属性, 这样React就可以方便地比对出插入或删除项了.关于 key 属性, 应稳定、可预测且在列表内唯一(无需全局唯一), 如果数据有ID的话直接使用此ID作为 key, 或者利用数据中的一部分字段哈希出一个...key值.避免使用数组索引值作为 key, 因为当插入或删除元素后, 之后的元素和索引值的对应关系都会发生错乱, 导致错误的比对结果.避免使用不稳定的key(如随机数), 因为每次渲染都会发生改变, 从而导致列表项被不必要地重建...节中我们介绍过, 在Fiber节点中有一个重要属性 alternate , 单词意为“备用”.实际上, 在React中最多会同时存在两棵Fiber树:当前显示在屏幕上、已经构建完成的Fiber树称为“Current