fix(runtime-core): return the exposeProxy from mount (#4606)
This commit is contained in:
		
							parent
							
								
									2ca45dc3e6
								
							
						
					
					
						commit
						5aa4255808
					
				@ -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() {
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,8 @@ import {
 | 
			
		||||
  Data,
 | 
			
		||||
  validateComponentName,
 | 
			
		||||
  Component,
 | 
			
		||||
  ComponentInternalInstance
 | 
			
		||||
  ComponentInternalInstance,
 | 
			
		||||
  getExposeProxy
 | 
			
		||||
} from './component'
 | 
			
		||||
import {
 | 
			
		||||
  ComponentOptions,
 | 
			
		||||
@ -309,7 +310,7 @@ export function createAppAPI<HostElement>(
 | 
			
		||||
            devtoolsInitApp(app, version)
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          return vnode.component!.proxy
 | 
			
		||||
          return getExposeProxy(vnode.component!) || vnode.component!.proxy
 | 
			
		||||
        } else if (__DEV__) {
 | 
			
		||||
          warn(
 | 
			
		||||
            `App has already been mounted.\n` +
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user