From bb73eeecc5cc1c93a92989644c3fcd1cb9b4c8ae Mon Sep 17 00:00:00 2001 From: "lihao.ylh" Date: Mon, 22 Nov 2021 10:46:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20stage=20=E9=87=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=97=A0=E6=B3=95=E8=B7=9F=E9=9A=8F=20field?= =?UTF-8?q?=20=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Link: https://code.aone.alibaba-inc.com/ali-lowcode/ali-lowcode-engine/codereview/6988263 * fix: 修复 stage 里数据无法跟随 field 数据更新 --- .../src/components/settings/settings-pane.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/editor-skeleton/src/components/settings/settings-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-pane.tsx index 060daccf1..0552799b7 100644 --- a/packages/editor-skeleton/src/components/settings/settings-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-pane.tsx @@ -108,15 +108,17 @@ class SettingFieldView extends Component<{ field: SettingField }> { let _onChange = extraProps?.onChange; let stageName; if (display === 'entry') { + stageName = `${field.getNode().id }_${field.name.toString()}`; + // 清除原 stage,不然 content 引用的一直是老的 field,导致数据无法得到更新 + stages.container.remove(stageName); const stage = stages.add({ type: 'Widget', - name: `${field.getNode().id }_${field.name.toString()}`, + name: stageName, content: {field.items.map((item, index) => createSettingFieldView(item, field, index))}, props: { title: field.title, }, }); - stageName = stage.name; } return createField( @@ -192,15 +194,17 @@ class SettingGroupView extends Component<{ field: SettingField }> { let stageName; if (display === 'entry') { - const stage = stages.add({ + stageName = `${field.getNode().id }_${field.name.toString()}`; + // 清除原 stage,不然 content 引用的一直是老的 field,导致数据无法得到更新 + stages.container.remove(stageName); + stages.add({ type: 'Widget', - name: `${field.getNode().id }_${ field.name.toString()}`, + name: stageName, content: {field.items.map((item, index) => createSettingFieldView(item, field, index))}, props: { title: field.title, }, }); - stageName = stage.name; } // todo: split collapsed state | field.items for optimize