]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
feat(runtime-core): failed component resolution should fallback to native element
authorEvan You <yyx990803@gmail.com>
Wed, 25 Mar 2020 19:08:15 +0000 (15:08 -0400)
committerEvan You <yyx990803@gmail.com>
Wed, 25 Mar 2020 19:08:15 +0000 (15:08 -0400)
packages/runtime-core/src/helpers/resolveAssets.ts

index efc85dd30e653a2c6de629987ff23cf8abc3211b..fe38ef887a3451f5b0625f30a1befe04fa556bb5 100644 (file)
@@ -1,10 +1,5 @@
 import { currentRenderingInstance } from '../componentRenderUtils'
-import {
-  currentInstance,
-  Component,
-  ComponentInternalInstance,
-  FunctionalComponent
-} from '../component'
+import { currentInstance, Component, FunctionalComponent } from '../component'
 import { Directive } from '../directives'
 import {
   camelize,
@@ -18,8 +13,8 @@ import { warn } from '../warning'
 const COMPONENTS = 'components'
 const DIRECTIVES = 'directives'
 
-export function resolveComponent(name: string): Component | undefined {
-  return resolveAsset(COMPONENTS, name)
+export function resolveComponent(name: string): Component | string | undefined {
+  return resolveAsset(COMPONENTS, name) || name
 }
 
 export function resolveDynamicComponent(
@@ -27,11 +22,7 @@ export function resolveDynamicComponent(
 ): Component | string | undefined {
   if (!component) return
   if (isString(component)) {
-    return (
-      resolveAsset(COMPONENTS, component, currentRenderingInstance, false) ||
-      // fallback to plain element
-      component
-    )
+    return resolveAsset(COMPONENTS, component, false) || component
   } else if (isFunction(component) || isObject(component)) {
     return component
   }
@@ -45,23 +36,20 @@ export function resolveDirective(name: string): Directive | undefined {
 function resolveAsset(
   type: typeof COMPONENTS,
   name: string,
-  instance?: ComponentInternalInstance | null,
   warnMissing?: boolean
 ): Component | undefined
 // overload 2: directives
 function resolveAsset(
   type: typeof DIRECTIVES,
-  name: string,
-  instance?: ComponentInternalInstance | null
+  name: string
 ): Directive | undefined
 
 function resolveAsset(
   type: typeof COMPONENTS | typeof DIRECTIVES,
   name: string,
-  instance: ComponentInternalInstance | null = currentRenderingInstance ||
-    currentInstance,
   warnMissing = true
 ) {
+  const instance = currentRenderingInstance || currentInstance
   if (instance) {
     let camelized, capitalized
     const registry = instance[type]