Skip to content

Commit

Permalink
perf(runtime-vapor): setup() returning object is only needed in __D…
Browse files Browse the repository at this point in the history
…EV__ (HMR) (#296)
  • Loading branch information
LittleSound authored Nov 30, 2024
1 parent e61cedf commit f0361ba
Showing 1 changed file with 31 additions and 25 deletions.
56 changes: 31 additions & 25 deletions packages/runtime-vapor/src/apiRender.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit f0361ba

Please sign in to comment.