feat(runtime-core): failed component resolution should fallback to native element
This commit is contained in:
parent
c5beb9fb4c
commit
cb31eb4d0a
@ -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]
|
||||
|
Loading…
Reference in New Issue
Block a user