fix: 😊修复arraysetter删除不更新问题

This commit is contained in:
荣彬 2020-08-01 22:42:32 +08:00
parent 7f4df0950d
commit 9d8a7306a6

View File

@ -85,7 +85,6 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
private scrollToLast = false; private scrollToLast = false;
onAdd() { onAdd() {
const { items, itemsMap } = this.state; const { items, itemsMap } = this.state;
debugger;
const { itemSetter } = this.props; const { itemSetter } = this.props;
const initialValue = typeof itemSetter === 'object' ? (itemSetter as any).initialValue : null; const initialValue = typeof itemSetter === 'object' ? (itemSetter as any).initialValue : null;
const item = this.props.field.createField({ const item = this.props.field.createField({
@ -104,18 +103,25 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
} }
onRemove(field: SettingField) { onRemove(field: SettingField) {
const { items } = this.state; const {onChange, itemSetter} = this.props;
const { items, itemsMap } = this.state;
let i = items.indexOf(field); let i = items.indexOf(field);
const values = items.map((item) => {
return item.getValue();
});
if (i < 0) { if (i < 0) {
return; return;
} }
items.splice(i, 1); items.splice(i, 1);
values.splice(i, 1);
const l = items.length; const l = items.length;
while (i < l) { while (i < l) {
items[i].setKey(i); items[i].setKey(i);
i++; i++;
} }
itemsMap.delete(field.id);
field.remove(); field.remove();
onChange(values)
this.setState({ items: items.slice() }); this.setState({ items: items.slice() });
} }