Skip to content

Commit 9875ecd

Browse files
authored
fix(runtime-core): support extends template for runtime compiler (#6250)
fix #6249
1 parent 6624ead commit 9875ecd

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

packages/runtime-core/__tests__/apiOptions.spec.ts

+14
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
createApp,
1313
computed
1414
} from '@vue/runtime-test'
15+
import { render as domRender } from 'vue'
1516

1617
describe('api: options', () => {
1718
test('data', async () => {
@@ -1035,6 +1036,19 @@ describe('api: options', () => {
10351036
expect(renderToString(h(Comp))).toBe('base,base')
10361037
})
10371038

1039+
test('extends template', () => {
1040+
const Comp = {
1041+
extends: {
1042+
template: `<h1>Foo</h1>`
1043+
}
1044+
}
1045+
1046+
const root = document.createElement('div') as any
1047+
domRender(h(Comp), root)
1048+
expect(root.innerHTML).toBe(`<h1>Foo</h1>`)
1049+
})
1050+
1051+
10381052
test('options defined in component have higher priority', async () => {
10391053
const Mixin = {
10401054
msg1: 'base'

packages/runtime-core/src/component.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ import {
3535
applyOptions,
3636
ComponentOptions,
3737
ComputedOptions,
38-
MethodOptions
38+
MethodOptions,
39+
resolveMergedOptions
3940
} from './componentOptions'
4041
import {
4142
EmitsOptions,
@@ -792,7 +793,8 @@ export function finishComponentSetup(
792793
(__COMPAT__ &&
793794
instance.vnode.props &&
794795
instance.vnode.props['inline-template']) ||
795-
Component.template
796+
Component.template ||
797+
resolveMergedOptions(instance).template
796798
if (template) {
797799
if (__DEV__) {
798800
startMeasure(instance, `compile`)

0 commit comments

Comments
 (0)