refactor(runtime-vapor): remove public instance

This commit is contained in:
三咲智子 Kevin Deng 2023-12-25 02:40:31 +08:00
parent 3d4bc018d7
commit efc32b716f
No known key found for this signature in database
GPG Key ID: 69992F2250DFD93E
5 changed files with 3 additions and 37 deletions

View File

@ -137,7 +137,7 @@ describe('watchEffect and onEffectCleanup', () => {
}
const instance = render(demo as any, {}, '#host')
const { change } = instance.proxy as any
const { change } = instance.setupState as any
expect(calls).toEqual(['pre 0', 'sync 0', 'render 0'])
calls.length = 0

View File

@ -37,9 +37,6 @@ export interface ComponentInternalInstance {
parent: ComponentInternalInstance | null
// TODO: type
proxy: Data | null
// state
props: Data
setupState: Data
@ -144,7 +141,6 @@ export const createComponentInstance = (
// resolved props and emits options
propsOptions: normalizePropsOptions(component),
// emitsOptions: normalizeEmitsOptions(type, appContext), // TODO:
proxy: null,
// state
props: EMPTY_OBJ,

View File

@ -1,22 +0,0 @@
import { hasOwn } from '@vue/shared'
import { type ComponentInternalInstance } from './component'
export interface ComponentRenderContext {
[key: string]: any
_: ComponentInternalInstance
}
export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
get({ _: instance }: ComponentRenderContext, key: string) {
let normalizedProps
const { setupState, props } = instance
if (hasOwn(setupState, key)) {
return setupState[key]
} else if (
(normalizedProps = instance.propsOptions[0]) &&
hasOwn(normalizedProps, key)
) {
return props![key]
}
},
}

View File

@ -113,8 +113,6 @@ export function handleError(
) {
if (instance) {
let cur = instance.parent
// the exposed instance is the render proxy to keep it consistent with 2.x
const exposedInstance = ('proxy' in instance && instance.proxy) || null
// in production the hook receives only the error code
const errorInfo = __DEV__
? ErrorTypeStrings[type]
@ -123,9 +121,7 @@ export function handleError(
const errorCapturedHooks = 'ec' in cur ? cur.ec : null
if (errorCapturedHooks) {
for (let i = 0; i < errorCapturedHooks.length; i++) {
if (
errorCapturedHooks[i](err, exposedInstance, errorInfo) === false
) {
if (errorCapturedHooks[i](err, instance, errorInfo) === false) {
return
}
}

View File

@ -10,7 +10,6 @@ import {
import { initProps } from './componentProps'
import { invokeDirectiveHook } from './directive'
import { insert, remove } from './dom'
import { PublicInstanceProxyHandlers } from './componentPublicInstance'
export type Block = Node | Fragment | Block[]
export type ParentBlock = ParentNode | Node[]
@ -51,9 +50,6 @@ export function mountComponent(
const setupFn =
typeof component === 'function' ? component : component.setup
instance.proxy = markRaw(
new Proxy({ _: instance }, PublicInstanceProxyHandlers),
)
const state = setupFn && setupFn(props, ctx)
let block: Block | null = null
if (state && '__isScriptSetup' in state) {
@ -61,7 +57,7 @@ export function mountComponent(
const currentlyRenderingActivity = isRenderingActivity
isRenderingActivity = true
try {
block = component.render(instance.proxy)
block = component.render(instance.setupState)
} finally {
isRenderingActivity = currentlyRenderingActivity
}