Open moonlight718 opened 4 years ago
function patchFragment (prevVNode, nextVNode, container) { patchChildren( prevVNode.childFlags, nextVNode.childFlags, prevVNode.children, nextVNode.children, container ); switch (nextVNode.childFlags) { case ChildrenFlags.SINGLE_VNODE: nextVNode.el = nextVNode.children.el; break; case ChildrenFlags.NO_CHILDREN: // 如果 prevVNode 的子节点有一个或者多个 // 此时 prevVNode.el 应该指向 children 的第一个子节点。 // 当nextVNode 没有子节点时,它的 el 应该引用一个空文本节点,但是绝对不是prevVNode.e l nextVNode.el = prevVNode.el; break; default: nextVNode.el = nextVNode.children[0].el; break; } }
没错 我也感觉这个地方有点问题…… 应该判断 prevVNode.childFlags,如果是 SINGLE 或者 MULTIPLE 则应该 createTextVnode('') 然后 mount 然后把 nextVNode.el 指向这个 vnode 的 el
prevVNode.childFlags
createTextVnode('')
nextVNode.el