From: skirtle <65301168+skirtles-code@users.noreply.github.com> Date: Tue, 21 Sep 2021 16:55:08 +0000 (+0100) Subject: fix(runtime-core): return the exposeProxy from mount (#4606) X-Git-Tag: v3.2.13~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5aa425580808d0588aef12ead81c91f7147e1042;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-core): return the exposeProxy from mount (#4606) --- diff --git a/packages/runtime-core/__tests__/apiExpose.spec.ts b/packages/runtime-core/__tests__/apiExpose.spec.ts index 9f7ba53503..1235096b01 100644 --- a/packages/runtime-core/__tests__/apiExpose.spec.ts +++ b/packages/runtime-core/__tests__/apiExpose.spec.ts @@ -1,4 +1,4 @@ -import { nodeOps, render } from '@vue/runtime-test' +import { createApp, nodeOps, render } from '@vue/runtime-test' import { defineComponent, h, ref } from '../src' describe('api: expose', () => { @@ -170,6 +170,26 @@ describe('api: expose', () => { render(h(Parent), root) }) + test('with mount', () => { + const Component = defineComponent({ + setup(_, { expose }) { + expose({ + foo: 1 + }) + return { + bar: 2 + } + }, + render() { + return h('div') + } + }) + const root = nodeOps.createElement('div') + const vm = createApp(Component).mount(root) as any + expect(vm.foo).toBe(1) + expect(vm.bar).toBe(undefined) + }) + test('expose should allow access to built-in instance properties', () => { const GrandChild = defineComponent({ render() { diff --git a/packages/runtime-core/src/apiCreateApp.ts b/packages/runtime-core/src/apiCreateApp.ts index 3e438107da..b77c90c344 100644 --- a/packages/runtime-core/src/apiCreateApp.ts +++ b/packages/runtime-core/src/apiCreateApp.ts @@ -3,7 +3,8 @@ import { Data, validateComponentName, Component, - ComponentInternalInstance + ComponentInternalInstance, + getExposeProxy } from './component' import { ComponentOptions, @@ -309,7 +310,7 @@ export function createAppAPI( devtoolsInitApp(app, version) } - return vnode.component!.proxy + return getExposeProxy(vnode.component!) || vnode.component!.proxy } else if (__DEV__) { warn( `App has already been mounted.\n` +