diff --git a/packages/runtime-core/src/componentRenderUtils.ts b/packages/runtime-core/src/componentRenderUtils.ts index a1afae620..9df289b47 100644 --- a/packages/runtime-core/src/componentRenderUtils.ts +++ b/packages/runtime-core/src/componentRenderUtils.ts @@ -3,6 +3,7 @@ import { type Data, type FunctionalComponent, getComponentName, + isStatefulComponent, } from './component' import { Comment, @@ -63,6 +64,7 @@ export function renderComponentRoot( inheritAttrs, } = instance const prev = setCurrentRenderingInstance(instance) + const isStateful = isStatefulComponent(instance) let result let fallthroughAttrs @@ -71,7 +73,7 @@ export function renderComponentRoot( } try { - if (vnode.shapeFlag & ShapeFlags.STATEFUL_COMPONENT) { + if (isStateful) { // withProxy is a proxy with a different `has` trap only for // runtime-compiled render functions using `with` block. const proxyToUse = withProxy || proxy @@ -154,9 +156,8 @@ export function renderComponentRoot( if (fallthroughAttrs && inheritAttrs !== false) { const keys = Object.keys(fallthroughAttrs) - const { shapeFlag } = root if (keys.length) { - if (shapeFlag & (ShapeFlags.ELEMENT | ShapeFlags.COMPONENT)) { + if (isElementRoot(root)) { if (propsOptions && keys.some(isModelListener)) { // If a v-model listener (onUpdate:xxx) has a corresponding declared // prop, it indicates this component expects to handle v-model and @@ -210,8 +211,8 @@ export function renderComponentRoot( if ( __COMPAT__ && isCompatEnabled(DeprecationTypes.INSTANCE_ATTRS_CLASS_STYLE, instance) && - vnode.shapeFlag & ShapeFlags.STATEFUL_COMPONENT && - root.shapeFlag & (ShapeFlags.ELEMENT | ShapeFlags.COMPONENT) + isStateful && + isElementRoot(root) ) { const { class: cls, style } = vnode.props || {} if (cls || style) {