diff --git a/packages/runtime-core/src/vnode.ts b/packages/runtime-core/src/vnode.ts index 3e2bf518..f4de40ef 100644 --- a/packages/runtime-core/src/vnode.ts +++ b/packages/runtime-core/src/vnode.ts @@ -239,6 +239,16 @@ const createVNodeWithArgsTransform = ( export const InternalObjectKey = `__vInternal` +const normalizeKey = ({ key }: VNodeProps): VNode['key'] => + key != null ? key : null + +const normalizeRef = ({ ref }: VNodeProps): VNode['ref'] => + (ref != null + ? isArray(ref) + ? ref + : [currentRenderingInstance!, ref] + : null) as any + export const createVNode = (__DEV__ ? createVNodeWithArgsTransform : _createVNode) as typeof _createVNode @@ -312,11 +322,8 @@ function _createVNode( _isVNode: true, type, props, - key: props && props.key != null ? props.key : null, - ref: - props && props.ref != null - ? [currentRenderingInstance!, props.ref] - : null, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), scopeId: currentScopeId, children: null, component: null, @@ -373,13 +380,8 @@ export function cloneVNode( _isVNode: true, type: vnode.type, props, - key: props && props.key != null ? props.key : null, - ref: - props && props.ref != null - ? isArray(props.ref) - ? props.ref - : [currentRenderingInstance!, props.ref] - : null, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), scopeId: vnode.scopeId, children: vnode.children, target: vnode.target,