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