fix arraysetter sort

This commit is contained in:
zude.hzd 2020-08-10 16:21:47 +08:00
parent 4f042c6e6d
commit fdc8aec769
2 changed files with 22 additions and 4 deletions

View File

@ -40,6 +40,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
const itemsMap = state ? state.itemsMap : new Map<string | number, SettingField>(); const itemsMap = state ? state.itemsMap : new Map<string | number, SettingField>();
const items = state ? state.items.slice() : []; const items = state ? state.items.slice() : [];
debugger;
if (newLength > originLength) { if (newLength > originLength) {
for (let i = originLength; i < newLength; i++) { for (let i = originLength; i < newLength; i++) {
const item = field.createField({ const item = field.createField({
@ -57,6 +58,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
itemsMap.delete(item.id); itemsMap.delete(item.id);
}); });
} }
return { return {
items, items,
itemsMap, itemsMap,
@ -72,7 +74,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
onSort(sortedIds: Array<string | number>) { onSort(sortedIds: Array<string | number>) {
const { itemsMap } = this.state; const { itemsMap } = this.state;
const { onChange } = this.props; const { onChange ,itemSetter,field} = this.props;
const items = sortedIds.map((id, index) => { const items = sortedIds.map((id, index) => {
const item = itemsMap.get(id)!; const item = itemsMap.get(id)!;
// item.setKey(index); // item.setKey(index);
@ -82,10 +84,26 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
const values = items.map((item) => { const values = items.map((item) => {
return item.getValue(); return item.getValue();
}); });
console.log('values',values);
// 对itemsMap重新生成并刷新当前setter数据
let newItems = [],newItemsMap = {}
itemsMap.clear();
for (let i = 0; i < items.length; i++) {
const newItem = field.createField({
name: i,
setter: itemSetter,
// FIXME:
forceInline: 1,
});
newItems[i] = newItem;
itemsMap.set(newItem.id, newItem);
}
onChange(values); onChange(values);
this.setState({ this.setState({
items, items:newItems,
itemsMap
}); });
} }

View File

@ -53,5 +53,5 @@
"publishConfig": { "publishConfig": {
"registry": "http://registry.npm.alibaba-inc.com" "registry": "http://registry.npm.alibaba-inc.com"
}, },
"homepage": "https://unpkg.alibaba-inc.com/@ali/lowcode-react-renderer@0.8.13/build/index.html" "homepage": "https:/unpkg.alibaba-inc.com/@ali/lowcode-react-renderer@0.8.13/build/index.html"
} }