diff --git a/packages/runtime-core/__tests__/apiExpose.spec.ts b/packages/runtime-core/__tests__/apiExpose.spec.ts index 1235096b016..c717964e407 100644 --- a/packages/runtime-core/__tests__/apiExpose.spec.ts +++ b/packages/runtime-core/__tests__/apiExpose.spec.ts @@ -216,7 +216,9 @@ 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('$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 eededdf34d0..eefc537f7ef 100644 --- a/packages/runtime-core/src/component.ts +++ b/packages/runtime-core/src/component.ts @@ -942,6 +942,15 @@ export function getExposeProxy(instance: ComponentInternalInstance) { } else if (key in publicPropertiesMap) { return publicPropertiesMap[key](instance) } + }, + has(target, key: string) { + if (key in target) { + return true + } else if (key in publicPropertiesMap) { + return true + } + + return false } })) )