From: Evan You Date: Wed, 17 Oct 2018 20:37:45 +0000 (-0400) Subject: refactor: createComponentInstance needs only 1 argument X-Git-Tag: v3.0.0-alpha.0~1094 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7d091b5e91f486450b9cbce007c6631275826c3d;p=thirdparty%2Fvuejs%2Fcore.git refactor: createComponentInstance needs only 1 argument --- diff --git a/packages/core/src/componentUtils.ts b/packages/core/src/componentUtils.ts index 76a1e3e0a9..d31405812d 100644 --- a/packages/core/src/componentUtils.ts +++ b/packages/core/src/componentUtils.ts @@ -24,9 +24,8 @@ import { warn } from './warning' let currentVNode: VNode | null = null let currentContextVNode: VNode | null = null -export function createComponentInstance( - vnode: VNode, - Component: ComponentClass +export function createComponentInstance( + vnode: VNode ): ComponentInstance { // component instance creation is done in two steps. // first, `initializeComponentInstance` is called inside base component @@ -37,6 +36,7 @@ export function createComponentInstance( // always pass args in super() currentVNode = vnode currentContextVNode = vnode.contextVNode + const Component = vnode.tag as ComponentClass const instance = (vnode.children = new Component() as ComponentInstance) // then we finish the initialization by collecting properties set on the diff --git a/packages/core/src/createRenderer.ts b/packages/core/src/createRenderer.ts index 963432e04f..b4e6f60e0e 100644 --- a/packages/core/src/createRenderer.ts +++ b/packages/core/src/createRenderer.ts @@ -11,11 +11,7 @@ import { Ref, VNodeChildren } from './vdom' -import { - ComponentInstance, - FunctionalComponent, - ComponentClass -} from './component' +import { ComponentInstance, FunctionalComponent } from './component' import { updateProps } from './componentProps' import { renderInstanceRoot, @@ -229,13 +225,7 @@ export function createRenderer(options: RendererOptions) { // kept-alive activateComponentInstance(vnode, container, endNode) } else { - mountComponentInstance( - vnode, - vnode.tag as ComponentClass, - container, - isSVG, - endNode - ) + mountComponentInstance(vnode, container, isSVG, endNode) } } @@ -1151,19 +1141,17 @@ export function createRenderer(options: RendererOptions) { function mountComponentInstance( vnode: VNode, - Component: ComponentClass, container: RenderNode | null, isSVG: boolean, endNode: RenderNode | null ): RenderNode { // a vnode may already have an instance if this is a compat call with // new Vue() - const instance = - (__COMPAT__ && (vnode.children as ComponentInstance)) || - createComponentInstance(vnode, Component) + const instance = ((__COMPAT__ && vnode.children) || + createComponentInstance(vnode as any)) as ComponentInstance // inject platform-specific unmount to keep-alive container - if ((Component as any)[KeepAliveSymbol] === true) { + if ((vnode.tag as any)[KeepAliveSymbol] === true) { ;(instance as any).$unmount = unmountComponentInstance } diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index 72fa6708ec..744d29b228 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -17,7 +17,7 @@ class Vue { // convert it to a class const Component = createComponentClassFromOptions(options || {}) const vnode = h(Component) - const instance = createComponentInstance(vnode, Component) + const instance = createComponentInstance(vnode) function mount(el: any) { const dom = typeof el === 'string' ? document.querySelector(el) : el