From 03605724769b72ab28aa6c4ae7311c10257dd8f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=9B=E7=9A=93?= Date: Tue, 8 Jun 2021 14:20:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20fieldId=20=E6=9C=89=E5=80=BC=E6=97=B6?= =?UTF-8?q?=E8=B7=B3=E8=BF=87=20initial,=20=E5=9B=A0=E4=B8=BA=E5=9C=A8?= =?UTF-8?q?=E7=9B=AE=E5=89=8D=20vc=20=E7=9A=84=20fieldId=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E6=98=AF=E6=AF=8F=E6=AC=A1=E8=BF=94=E5=9B=9E=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/props-reducers/init-node-reducer.ts | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/vision-polyfill/src/props-reducers/init-node-reducer.ts b/packages/vision-polyfill/src/props-reducers/init-node-reducer.ts index 08d9ef2cf..11f826ad9 100644 --- a/packages/vision-polyfill/src/props-reducers/init-node-reducer.ts +++ b/packages/vision-polyfill/src/props-reducers/init-node-reducer.ts @@ -27,19 +27,25 @@ export function initNodeReducer(props, node) { initials.forEach(item => { try { // FIXME! item.name could be 'xxx.xxx' - const value = props[item.name]; - // JSExpression 并且带有 events 字段属于特殊情况,不再处理 - if (!(isJSExpression(value) && value.events)) { - newProps[item.name] = item.initial(node as any, newProps[item.name]); + const value = newProps[item.name]; + // 几种不再进行 initial 计算的情况 + // 1. name === 'fieldId' 并且已经有值 + // 2. 结构为 JSExpression 并且带有 events 字段 + if ((item.name === 'fieldId' && value) || (isJSExpression(value) && value.events)) { + if (newProps[item.name] && !node.props.has(item.name)) { + node.props.add(value, item.name, false, { skipSetSlot: true }); + } + return; + } + newProps[item.name] = item.initial(node as any, newProps[item.name]); + if (newProps[item.name] && !node.props.has(item.name)) { + node.props.add(value, item.name, false, { skipSetSlot: true }); } } catch (e) { if (hasOwnProperty(props, item.name)) { newProps[item.name] = props[item.name]; } } - if (newProps[item.name] && !node.props.has(item.name)) { - node.props.add(newProps[item.name], item.name, false, { skipSetSlot: true }); - } }); } return newProps;