fix: parent chain error when root is functional

This commit is contained in:
Evan You 2018-10-28 12:08:20 -04:00
parent 832d715afe
commit 01bb8d1894
1 changed files with 10 additions and 11 deletions

View File

@ -77,18 +77,17 @@ export function initializeComponentInstance(instance: ComponentInstance) {
// parent chain management // parent chain management
if (currentContextVNode !== null) { if (currentContextVNode !== null) {
// locate first non-functional parent // locate first non-functional parent
while ( while (currentContextVNode !== null) {
currentContextVNode !== null && if ((currentContextVNode.flags & VNodeFlags.COMPONENT_STATEFUL) > 0) {
currentContextVNode.flags & VNodeFlags.COMPONENT_FUNCTIONAL &&
currentContextVNode.contextVNode !== null
) {
currentContextVNode = currentContextVNode.contextVNode as any
}
const parentComponent = (currentContextVNode as VNode) const parentComponent = (currentContextVNode as VNode)
.children as ComponentInstance .children as ComponentInstance
instance.$parent = parentComponent.$proxy instance.$parent = parentComponent.$proxy
instance.$root = parentComponent.$root instance.$root = parentComponent.$root
parentComponent.$children.push(proxy) parentComponent.$children.push(proxy)
break
}
currentContextVNode = currentContextVNode.contextVNode
}
} else { } else {
instance.$root = proxy instance.$root = proxy
} }