feat(sfc): allow sfcs to recursively self-reference in template via name inferred from filename

e.g. A file named `FooBar.vue` can refer to itself as `<FooBar/>`. This gets rid of the need for the `name` option.
This commit is contained in:
Evan You
2020-11-30 12:30:35 -05:00
parent 29d256c39d
commit 67d1aac6ae
8 changed files with 54 additions and 24 deletions

View File

@@ -263,7 +263,16 @@ export function resolveComponentType(
}
}
// 4. user component (resolve)
// 4. Self referencing component (inferred from filename)
if (!__BROWSER__ && context.selfName) {
if (capitalize(camelize(tag)) === context.selfName) {
context.helper(RESOLVE_COMPONENT)
context.components.add(`_self`)
return toValidAssetId(`_self`, `component`)
}
}
// 5. user component (resolve)
context.helper(RESOLVE_COMPONENT)
context.components.add(tag)
return toValidAssetId(tag, `component`)