From: 三咲智子 Kevin Deng Date: Sun, 24 Dec 2023 18:40:31 +0000 (+0800) Subject: refactor(runtime-vapor): remove public instance X-Git-Tag: v3.6.0-alpha.1~16^2~700 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=efc32b716fece04e3c5e7035f2bffc0327d4b347;p=thirdparty%2Fvuejs%2Fcore.git refactor(runtime-vapor): remove public instance --- diff --git a/packages/runtime-vapor/__tests__/apiWatch.spec.ts b/packages/runtime-vapor/__tests__/apiWatch.spec.ts index 02f88dedb3..ce8eae5c85 100644 --- a/packages/runtime-vapor/__tests__/apiWatch.spec.ts +++ b/packages/runtime-vapor/__tests__/apiWatch.spec.ts @@ -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 diff --git a/packages/runtime-vapor/src/component.ts b/packages/runtime-vapor/src/component.ts index 914f7beb6e..240df9d85b 100644 --- a/packages/runtime-vapor/src/component.ts +++ b/packages/runtime-vapor/src/component.ts @@ -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, diff --git a/packages/runtime-vapor/src/componentPublicInstance.ts b/packages/runtime-vapor/src/componentPublicInstance.ts deleted file mode 100644 index 8bfacf9816..0000000000 --- a/packages/runtime-vapor/src/componentPublicInstance.ts +++ /dev/null @@ -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 = { - 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] - } - }, -} diff --git a/packages/runtime-vapor/src/errorHandling.ts b/packages/runtime-vapor/src/errorHandling.ts index d7449f3b4c..6f8bcb5c6e 100644 --- a/packages/runtime-vapor/src/errorHandling.ts +++ b/packages/runtime-vapor/src/errorHandling.ts @@ -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 } } diff --git a/packages/runtime-vapor/src/render.ts b/packages/runtime-vapor/src/render.ts index 1f53978e81..dd6c2b2dff 100644 --- a/packages/runtime-vapor/src/render.ts +++ b/packages/runtime-vapor/src/render.ts @@ -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 }