vue-design
vue-design copied to clipboard
patchFragment 中当 nextVNode 的 childFlags 为 NO_CHILDREN el 的引用不对
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