DMQ / mvvm

剖析vue实现原理,自己动手实现mvvm
5.21k stars 1.26k forks source link

将原生节点拷贝到fragment的代码错误 #23

Closed saifeiLee closed 5 years ago

saifeiLee commented 6 years ago
// 将原生节点拷贝到fragment
        while (child = el.firstChild) {
            fragment.appendChild(child);
        }

这里是个无限循环,或许可以改为:

for (child = el.firstChild; child != null; child = child.nextSibling) {
      fragment.appendChild(child);
    }
H246802 commented 6 years ago

appendChild方法实际上会把节点添加到目标Node的子节点里面(在这里是fragment), 如果你的节点在HTML页面已经渲染了其实它会移除并添加到目标Node,因此你这里才可以得以循,没必要进行修改.

DMQ commented 5 years ago

感谢 @H246802 的解答,正解!