From: Rizumu Ayaka Date: Sat, 30 Nov 2024 10:32:16 +0000 (+0800) Subject: perf(runtime-vapor): `setup()` returning object is only needed in __DEV__ (HMR) ... X-Git-Tag: v3.6.0-alpha.1~16^2~266 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0361bafbbbd7d24b90b1cf72654f92cba895a82;p=thirdparty%2Fvuejs%2Fcore.git perf(runtime-vapor): `setup()` returning object is only needed in __DEV__ (HMR) (#296) --- diff --git a/packages/runtime-vapor/src/apiRender.ts b/packages/runtime-vapor/src/apiRender.ts index fe06beb655..408a7928d0 100644 --- a/packages/runtime-vapor/src/apiRender.ts +++ b/packages/runtime-vapor/src/apiRender.ts @@ -55,32 +55,38 @@ export function setupComponent(instance: ComponentInternalInstance): void { let block: Block | undefined - if ( - stateOrNode && - (stateOrNode instanceof Node || - isArray(stateOrNode) || - fragmentKey in stateOrNode || - componentKey in stateOrNode) - ) { + // Skip the type check for production since this is only for Dev HMR + if (__DEV__) { + if ( + stateOrNode && + (stateOrNode instanceof Node || + isArray(stateOrNode) || + fragmentKey in stateOrNode || + componentKey in stateOrNode) + ) { + block = stateOrNode + } else if (isObject(stateOrNode)) { + instance.setupState = proxyRefs(stateOrNode) + } + + if (!block && component.render) { + pauseTracking() + block = callWithErrorHandling( + component.render, + instance, + VaporErrorCodes.RENDER_FUNCTION, + [ + instance.setupState, // _ctx + shallowReadonly(props), // $props + instance.emit, // $emit + getAttrsProxy(instance), // $attrs + getSlotsProxy(instance), // $slots + ], + ) + resetTracking() + } + } else { block = stateOrNode - } else if (isObject(stateOrNode)) { - instance.setupState = proxyRefs(stateOrNode) - } - if (!block && component.render) { - pauseTracking() - block = callWithErrorHandling( - component.render, - instance, - VaporErrorCodes.RENDER_FUNCTION, - [ - instance.setupState, // _ctx - __DEV__ ? shallowReadonly(props) : props, // $props - instance.emit, // $emit - __DEV__ ? getAttrsProxy(instance) : instance.attrs, // $attrs - __DEV__ ? getSlotsProxy(instance) : instance.slots, // $slots - ], - ) - resetTracking() } if (!block) {