diff --git a/packages/runtime-core/__tests__/apiExpose.spec.ts b/packages/runtime-core/__tests__/apiExpose.spec.ts index 1235096b016..1bfd513943b 100644 --- a/packages/runtime-core/__tests__/apiExpose.spec.ts +++ b/packages/runtime-core/__tests__/apiExpose.spec.ts @@ -203,7 +203,9 @@ describe('api: expose', () => { return h('div') }, setup(_, { expose }) { - expose() + expose({ + foo: 42 + }) return () => h(GrandChild, { ref: grandChildRef }) } }) @@ -216,7 +218,10 @@ describe('api: expose', () => { } const root = nodeOps.createElement('div') render(h(Parent), root) + expect('$el' in childRef.value).toBe(true) expect(childRef.value.$el.tag).toBe('div') + expect('foo' in childRef.value).toBe(true) + expect('$parent' in grandChildRef.value).toBe(true) expect(grandChildRef.value.$parent).toBe(childRef.value) expect(grandChildRef.value.$parent.$parent).toBe(grandChildRef.value.$root) }) diff --git a/packages/runtime-core/src/component.ts b/packages/runtime-core/src/component.ts index c70a6f87411..68f10a669b3 100644 --- a/packages/runtime-core/src/component.ts +++ b/packages/runtime-core/src/component.ts @@ -945,6 +945,9 @@ export function getExposeProxy(instance: ComponentInternalInstance) { } else if (key in publicPropertiesMap) { return publicPropertiesMap[key](instance) } + }, + has(target, key: string) { + return key in target || key in publicPropertiesMap } })) )