From: Evan You Date: Mon, 16 Mar 2020 16:46:15 +0000 (-0400) Subject: refactor: simplify resolveDyanmicComponent X-Git-Tag: v3.0.0-alpha.9~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=19228a469a461406e16ec18c868972c6e842e093;p=thirdparty%2Fvuejs%2Fcore.git refactor: simplify resolveDyanmicComponent --- diff --git a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts index cc3cbd480a..85800feff6 100644 --- a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts +++ b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts @@ -814,8 +814,7 @@ describe('compiler: element transform', () => { { type: NodeTypes.SIMPLE_EXPRESSION, content: 'foo' - }, - '$' + } ] } }) diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts index 905268dee3..3123d8ecb7 100644 --- a/packages/compiler-core/src/transforms/transformElement.ts +++ b/packages/compiler-core/src/transforms/transformElement.ts @@ -215,11 +215,9 @@ export function resolveComponentType( } // dynamic else if (isProp.exp) { - return createCallExpression( - context.helper(RESOLVE_DYNAMIC_COMPONENT), - // _ctx.$ exposes the owner instance of current render function - [isProp.exp, context.prefixIdentifiers ? `_ctx.$` : `$`] - ) + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + isProp.exp + ]) } } diff --git a/packages/runtime-core/src/helpers/resolveAssets.ts b/packages/runtime-core/src/helpers/resolveAssets.ts index dd12b4730e..9c3dee57ff 100644 --- a/packages/runtime-core/src/helpers/resolveAssets.ts +++ b/packages/runtime-core/src/helpers/resolveAssets.ts @@ -23,16 +23,11 @@ export function resolveComponent(name: string): Component | undefined { } export function resolveDynamicComponent( - component: unknown, - // Dynamic component resolution has to be called inline due to potential - // access to scope variables. When called inside slots it will be inside - // a different component's render cycle, so the owner instance must be passed - // in explicitly. - instance: ComponentInternalInstance + component: unknown ): Component | undefined { if (!component) return if (isString(component)) { - return resolveAsset(COMPONENTS, component, instance) + return resolveAsset(COMPONENTS, component, currentRenderingInstance) } else if (isFunction(component) || isObject(component)) { return component } @@ -46,13 +41,13 @@ export function resolveDirective(name: string): Directive | undefined { function resolveAsset( type: typeof COMPONENTS, name: string, - instance?: ComponentInternalInstance + instance?: ComponentInternalInstance | null ): Component | undefined // overload 2: directives function resolveAsset( type: typeof DIRECTIVES, name: string, - instance?: ComponentInternalInstance + instance?: ComponentInternalInstance | null ): Directive | undefined function resolveAsset(