From 42ad304f524a1b567ed22136e43da03ee511af07 Mon Sep 17 00:00:00 2001 From: * <8> Date: Wed, 26 Jan 2022 16:51:22 +0800 Subject: [PATCH] Match-id-49b2c6ccbd0cc263e411bbca72854bd2f69bbb73 --- libs/horizon/src/external/JSXElement.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/libs/horizon/src/external/JSXElement.ts b/libs/horizon/src/external/JSXElement.ts index f0218ac9..5c379dce 100644 --- a/libs/horizon/src/external/JSXElement.ts +++ b/libs/horizon/src/external/JSXElement.ts @@ -37,7 +37,7 @@ function mergeDefault(sourceObj, defaultObj) { }); } -function buildElement(isClone, type, setting, ...children) { +function buildElement(isClone, type, setting, children) { // setting中的值优先级最高,clone情况下从 type 中取值,创建情况下直接赋值为 null const key = (setting && setting.key !== undefined) ? String(setting.key) : (isClone ? type.key : null); const ref = (setting && setting.ref !== undefined) ? setting.ref : (isClone ? type.ref : null); @@ -45,11 +45,14 @@ function buildElement(isClone, type, setting, ...children) { let vNode = isClone ? type.belongClassVNode : getProcessingClassVNode(); if (setting != null) { - Object.keys(setting).forEach(k => { + const keys = Object.keys(setting); + const keyLength = keys.length; + for(let i = 0; i < keyLength; i++) { + const k = keys[i]; if (isValidKey(k)) { props[k] = setting[k]; } - }); + } if (setting.ref !== undefined && isClone) { vNode = getProcessingClassVNode(); } @@ -69,11 +72,11 @@ function buildElement(isClone, type, setting, ...children) { // 创建Element结构体,供JSX编译时调用 export function createElement(type, setting, ...children) { - return buildElement(false, type, setting, ...children); + return buildElement(false, type, setting, children); } export function cloneElement(element, setting, ...children) { - return buildElement(true, element, setting, ...children); + return buildElement(true, element, setting, children); } // 检测结构体是否为合法的Element