From: edison Date: Wed, 31 Aug 2022 05:44:21 +0000 (+0800) Subject: fix(runtime-core): support extends template for runtime compiler (#6250) X-Git-Tag: v3.2.39~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9875ecd762155732008e397d450edb0f8c01b05c;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-core): support extends template for runtime compiler (#6250) fix #6249 --- diff --git a/packages/runtime-core/__tests__/apiOptions.spec.ts b/packages/runtime-core/__tests__/apiOptions.spec.ts index 18207f61dc..da5fe346c3 100644 --- a/packages/runtime-core/__tests__/apiOptions.spec.ts +++ b/packages/runtime-core/__tests__/apiOptions.spec.ts @@ -12,6 +12,7 @@ import { createApp, computed } from '@vue/runtime-test' +import { render as domRender } from 'vue' describe('api: options', () => { test('data', async () => { @@ -1035,6 +1036,19 @@ describe('api: options', () => { expect(renderToString(h(Comp))).toBe('base,base') }) + test('extends template', () => { + const Comp = { + extends: { + template: `

Foo

` + } + } + + const root = document.createElement('div') as any + domRender(h(Comp), root) + expect(root.innerHTML).toBe(`

Foo

`) + }) + + test('options defined in component have higher priority', async () => { const Mixin = { msg1: 'base' diff --git a/packages/runtime-core/src/component.ts b/packages/runtime-core/src/component.ts index eb933bb70f..c70a6f8741 100644 --- a/packages/runtime-core/src/component.ts +++ b/packages/runtime-core/src/component.ts @@ -35,7 +35,8 @@ import { applyOptions, ComponentOptions, ComputedOptions, - MethodOptions + MethodOptions, + resolveMergedOptions } from './componentOptions' import { EmitsOptions, @@ -792,7 +793,8 @@ export function finishComponentSetup( (__COMPAT__ && instance.vnode.props && instance.vnode.props['inline-template']) || - Component.template + Component.template || + resolveMergedOptions(instance).template if (template) { if (__DEV__) { startMeasure(instance, `compile`)