fix: 修复 stage 里数据无法跟随 field 数据更新

Link: https://code.aone.alibaba-inc.com/ali-lowcode/ali-lowcode-engine/codereview/6988263

* fix: 修复 stage 里数据无法跟随 field 数据更新
This commit is contained in:
lihao.ylh 2021-11-22 10:46:55 +08:00 committed by lianjie.lj
parent 5cb4313ad5
commit bb73eeecc5

View File

@ -108,15 +108,17 @@ class SettingFieldView extends Component<{ field: SettingField }> {
let _onChange = extraProps?.onChange; let _onChange = extraProps?.onChange;
let stageName; let stageName;
if (display === 'entry') { if (display === 'entry') {
stageName = `${field.getNode().id }_${field.name.toString()}`;
// 清除原 stage不然 content 引用的一直是老的 field导致数据无法得到更新
stages.container.remove(stageName);
const stage = stages.add({ const stage = stages.add({
type: 'Widget', type: 'Widget',
name: `${field.getNode().id }_${field.name.toString()}`, name: stageName,
content: <Fragment>{field.items.map((item, index) => createSettingFieldView(item, field, index))}</Fragment>, content: <Fragment>{field.items.map((item, index) => createSettingFieldView(item, field, index))}</Fragment>,
props: { props: {
title: field.title, title: field.title,
}, },
}); });
stageName = stage.name;
} }
return createField( return createField(
@ -192,15 +194,17 @@ class SettingGroupView extends Component<{ field: SettingField }> {
let stageName; let stageName;
if (display === 'entry') { 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', type: 'Widget',
name: `${field.getNode().id }_${ field.name.toString()}`, name: stageName,
content: <Fragment>{field.items.map((item, index) => createSettingFieldView(item, field, index))}</Fragment>, content: <Fragment>{field.items.map((item, index) => createSettingFieldView(item, field, index))}</Fragment>,
props: { props: {
title: field.title, title: field.title,
}, },
}); });
stageName = stage.name;
} }
// todo: split collapsed state | field.items for optimize // todo: split collapsed state | field.items for optimize