fix(sfc): avoid auto name inference leading to unwanted recursion
fix #5965 fix #6027 fix #6029
This commit is contained in:
@@ -106,6 +106,10 @@ export interface ComponentInternalOptions {
|
||||
* This one should be exposed so that devtools can make use of it
|
||||
*/
|
||||
__file?: string
|
||||
/**
|
||||
* name inferred from filename
|
||||
*/
|
||||
__name?: string
|
||||
}
|
||||
|
||||
export interface FunctionalComponent<P = {}, E extends EmitsOptions = {}>
|
||||
@@ -949,11 +953,12 @@ const classify = (str: string): string =>
|
||||
str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '')
|
||||
|
||||
export function getComponentName(
|
||||
Component: ConcreteComponent
|
||||
): string | undefined {
|
||||
Component: ConcreteComponent,
|
||||
includeInferred = true
|
||||
): string | false | undefined {
|
||||
return isFunction(Component)
|
||||
? Component.displayName || Component.name
|
||||
: Component.name
|
||||
: Component.name || (includeInferred && Component.__name)
|
||||
}
|
||||
|
||||
/* istanbul ignore next */
|
||||
|
||||
@@ -86,7 +86,10 @@ function resolveAsset(
|
||||
|
||||
// explicit self name has highest priority
|
||||
if (type === COMPONENTS) {
|
||||
const selfName = getComponentName(Component)
|
||||
const selfName = getComponentName(
|
||||
Component,
|
||||
false /* do not include inferred name to avoid breaking existing code */
|
||||
)
|
||||
if (
|
||||
selfName &&
|
||||
(selfName === name ||
|
||||
|
||||
Reference in New Issue
Block a user