From 774d8f10f381c2812a9164edcf75610ef7ef566c Mon Sep 17 00:00:00 2001 From: weidehai <243395655@qq.com> Date: Thu, 13 Oct 2022 22:43:58 +0800 Subject: [PATCH 1/5] fix(runtime-core): check extends render when convertLegacyRenderFn (#6860) --- packages/runtime-core/src/compat/renderFn.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/src/compat/renderFn.ts b/packages/runtime-core/src/compat/renderFn.ts index 4cf2fc226cf..e91bc8951f0 100644 --- a/packages/runtime-core/src/compat/renderFn.ts +++ b/packages/runtime-core/src/compat/renderFn.ts @@ -38,10 +38,13 @@ import { isCompatEnabled } from './compatConfig' import { compatModelEventPrefix } from './componentVModel' +import { resolveMergedOptions } from '../componentOptions' export function convertLegacyRenderFn(instance: ComponentInternalInstance) { const Component = instance.type as ComponentOptions - const render = Component.render as InternalRenderFunction | undefined + const render = (Component.render || resolveMergedOptions(instance).render) as + | InternalRenderFunction + | undefined // v3 runtime compiled, or already checked / wrapped if (!render || render._rc || render._compatChecked || render._compatWrapped) { From d6c92f6a86e205660c7b85dc2ea8e78c07865632 Mon Sep 17 00:00:00 2001 From: weidehai <243395655@qq.com> Date: Fri, 14 Oct 2022 00:10:35 +0800 Subject: [PATCH 2/5] fix(runtime-core): add test(#6860) --- packages/vue-compat/__tests__/renderFn.spec.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/vue-compat/__tests__/renderFn.spec.ts b/packages/vue-compat/__tests__/renderFn.spec.ts index 73876b4cf22..b6abf87fbd1 100644 --- a/packages/vue-compat/__tests__/renderFn.spec.ts +++ b/packages/vue-compat/__tests__/renderFn.spec.ts @@ -251,4 +251,19 @@ describe('compat: render function', () => { }).$mount() expect(vm.$el.outerHTML).toBe(`
hello
`) }) + test('convert extends render Fn', () => { + const BaseComponent = { + render: (h: any) => h('div', null, ['hello']) + } + const ExtendComponent = { + extends: BaseComponent + } + const vm = new Vue({ + components: { ExtendComponent }, + render(h: any) { + return h('extend-component', null, []) + } + }).$mount() + expect(vm.$el.outerHTML).toBe(`
hello
`) + }) }) From 64e32e79bbd02c0b74c793d7201d7cf32f72813b Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 07:07:58 +0000 Subject: [PATCH 3/5] [autofix.ci] apply automated fixes --- packages/vue-compat/__tests__/renderFn.spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/vue-compat/__tests__/renderFn.spec.ts b/packages/vue-compat/__tests__/renderFn.spec.ts index af67908e738..df094708905 100644 --- a/packages/vue-compat/__tests__/renderFn.spec.ts +++ b/packages/vue-compat/__tests__/renderFn.spec.ts @@ -254,16 +254,16 @@ describe('compat: render function', () => { }) test('convert extends render Fn', () => { const BaseComponent = { - render: (h: any) => h('div', null, ['hello']) + render: (h: any) => h('div', null, ['hello']), } const ExtendComponent = { - extends: BaseComponent + extends: BaseComponent, } const vm = new Vue({ components: { ExtendComponent }, render(h: any) { return h('extend-component', null, []) - } + }, }).$mount() expect(vm.$el.outerHTML).toBe(`
hello
`) }) From 3f51e7129ab3a1090a2788a834c213548a4355f7 Mon Sep 17 00:00:00 2001 From: edison Date: Tue, 22 Oct 2024 15:15:05 +0800 Subject: [PATCH 4/5] Update renderFn.spec.ts --- packages/vue-compat/__tests__/renderFn.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vue-compat/__tests__/renderFn.spec.ts b/packages/vue-compat/__tests__/renderFn.spec.ts index df094708905..cd1b7b74482 100644 --- a/packages/vue-compat/__tests__/renderFn.spec.ts +++ b/packages/vue-compat/__tests__/renderFn.spec.ts @@ -252,7 +252,8 @@ describe('compat: render function', () => { expect(vm.$el).toBeInstanceOf(HTMLDivElement) expect(vm.$el.outerHTML).toBe(`
hello
`) }) - test('convert extends render Fn', () => { + + test('extends render fn', () => { const BaseComponent = { render: (h: any) => h('div', null, ['hello']), } From 39c23bb4535729be60b14ba1a967a511712de193 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 07:15:50 +0000 Subject: [PATCH 5/5] [autofix.ci] apply automated fixes --- packages/vue-compat/__tests__/renderFn.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue-compat/__tests__/renderFn.spec.ts b/packages/vue-compat/__tests__/renderFn.spec.ts index cd1b7b74482..383f6f5b154 100644 --- a/packages/vue-compat/__tests__/renderFn.spec.ts +++ b/packages/vue-compat/__tests__/renderFn.spec.ts @@ -252,7 +252,7 @@ describe('compat: render function', () => { expect(vm.$el).toBeInstanceOf(HTMLDivElement) expect(vm.$el.outerHTML).toBe(`
hello
`) }) - + test('extends render fn', () => { const BaseComponent = { render: (h: any) => h('div', null, ['hello']),