先说结论,不同标签,推倒重建,相同标签,修改属性。
具体看下面的 demo。
1、 不同标签,删除 div 节点,新建 span 节点。
html
<!-- 更新前 -->
<div>jingdong</div>
<!-- 更新后 -->
<span>jingdong</span>
2、相同标签,把 className 修改为 cls2。
html
<!-- 更新前 -->
<div className="cls1">jingdong</div>
<!-- 更新后 -->
<div className="cls2">jingdong</div>
3、直接新增 huawei 节点即可。
html
<!-- 更新前 -->
<ul>
<li>jingdong</li>
<li>tengxun</li>
</ul>
<!-- 更新后 -->
<ul>
<li>jingdong</li>
<li>tengxun</li>
<li>huawei</li>
</ul>
4、key 不同,即使相同标签,也推倒重建。
优先比较
key。
html
<!-- 更新前 -->
<div key="jd">jingdong</div>
<!-- 更新后 -->
<div key="jingdong">jingdong</div>
5、两次修改,一次新增
注意:没有
key属性,对比下一个 demo。
html
<!-- 更新前 -->
<ul>
<li>jingdong</li>
<li>tengxun</li>
</ul>
<!-- 更新后 -->
<ul>
<li>huawei</li>
<li>jingdong</li>
<li>tengxun</li>
</ul>
- 将
jingdong节点修改为huawei节点 - 将
tengxun节点修改为jingdong节点 - 新增
tengxun节点
6、两次移动(性能更好),一次新增
注意:有
key了。
html
<!-- 更新前 -->
<ul>
<li key="jd">jingdong</li>
<li key="tx">tengxun</li>
</ul>
<!-- 更新后 -->
<ul>
<li key="hw">huawei</li>
<li key="jd">jingdong</li>
<li key="tx">tengxun</li>
</ul>
- 新增
huawei节点 - 移动
jingdong节点到第二位 - 移动
tengxun节点到第三位
遇知如何移动,请看下回。