fix(runtime-core): support extends template for runtime compiler (#6250)

fix #6249
This commit is contained in:
edison 2022-08-31 13:44:21 +08:00 committed by GitHub
parent 6624ead663
commit 9875ecd762
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 2 deletions

View File

@ -12,6 +12,7 @@ import {
createApp, createApp,
computed computed
} from '@vue/runtime-test' } from '@vue/runtime-test'
import { render as domRender } from 'vue'
describe('api: options', () => { describe('api: options', () => {
test('data', async () => { test('data', async () => {
@ -1035,6 +1036,19 @@ describe('api: options', () => {
expect(renderToString(h(Comp))).toBe('base,base') expect(renderToString(h(Comp))).toBe('base,base')
}) })
test('extends template', () => {
const Comp = {
extends: {
template: `<h1>Foo</h1>`
}
}
const root = document.createElement('div') as any
domRender(h(Comp), root)
expect(root.innerHTML).toBe(`<h1>Foo</h1>`)
})
test('options defined in component have higher priority', async () => { test('options defined in component have higher priority', async () => {
const Mixin = { const Mixin = {
msg1: 'base' msg1: 'base'

View File

@ -35,7 +35,8 @@ import {
applyOptions, applyOptions,
ComponentOptions, ComponentOptions,
ComputedOptions, ComputedOptions,
MethodOptions MethodOptions,
resolveMergedOptions
} from './componentOptions' } from './componentOptions'
import { import {
EmitsOptions, EmitsOptions,
@ -792,7 +793,8 @@ export function finishComponentSetup(
(__COMPAT__ && (__COMPAT__ &&
instance.vnode.props && instance.vnode.props &&
instance.vnode.props['inline-template']) || instance.vnode.props['inline-template']) ||
Component.template Component.template ||
resolveMergedOptions(instance).template
if (template) { if (template) {
if (__DEV__) { if (__DEV__) {
startMeasure(instance, `compile`) startMeasure(instance, `compile`)