From c9f10be9debb70deaca79da220c4a8219566bc06 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 24 Apr 2020 12:56:38 -0400 Subject: [PATCH] refactor(runtime-core): extract key/ref normalization logic --- packages/runtime-core/src/vnode.ts | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) 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,