Skip to content

Commit 3781033

Browse files
committed
fix: array setter make variable lose
1 parent 84b8890 commit 3781033

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

src/setter/array-setter/index.tsx

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
3838
}
3939

4040
init() {
41-
const { value, field } = this.props;
41+
const { value, field, onChange } = this.props;
4242
const items: SettingField[] = [];
4343
const valueLength = value && Array.isArray(value) ? value.length : 0;
4444

@@ -54,7 +54,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
5454
});
5555
items.push(item);
5656
}
57-
field.setValue(value);
57+
onChange?.(value);
5858
this.state = { items };
5959
}
6060

@@ -75,7 +75,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
7575
);
7676
return;
7777
}
78-
const { field } = this.props;
78+
const { field, value: fieldValue } = this.props;
7979
const { items } = this.state;
8080
const { path } = field;
8181
if (path[0] !== targetPath[0]) {
@@ -84,7 +84,6 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
8484
);
8585
return;
8686
}
87-
const fieldValue = field.getValue();
8887
try {
8988
const index = +targetPath[targetPath.length - 2];
9089
if (typeof index === 'number' && !isNaN(index)) {
@@ -97,10 +96,9 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
9796
};
9897

9998
onSort(sortedIds: Array<string | number>) {
100-
const { field } = this.props;
99+
const { onChange, value: oldValues } = this.props;
101100
const { items } = this.state;
102101
const values: any[] = [];
103-
const oldValues = field.getValue();
104102
const newItems: SettingField[] = [];
105103
sortedIds.map((id, index) => {
106104
const item = items[+id];
@@ -109,15 +107,15 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
109107
newItems[index] = item;
110108
return id;
111109
});
112-
field.setValue(values);
110+
onChange?.(values);
113111
this.setState({ items: newItems });
114112
}
115113

116114
onAdd(newValue?: {[key: string]: any}) {
117115
const { items = [] } = this.state;
118-
const { itemSetter, field } = this.props;
119-
const values = field.getValue() || [];
120-
const { initialValue } = itemSetter;
116+
const { itemSetter, field, onChange, value = [] } = this.props;
117+
const values = value || [];
118+
const initialValue = (itemSetter as any)?.initialValue;
121119
const defaultValue = newValue ? newValue : (typeof initialValue === 'function' ? initialValue(field) : initialValue);
122120
const item = field.createField({
123121
name: items.length,
@@ -128,18 +126,17 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
128126
setValue: this.onItemChange,
129127
},
130128
});
131-
values.push(defaultValue);
132-
133129
items.push(item);
130+
values.push(defaultValue);
134131
this.scrollToLast = true;
135-
field?.setValue(values);
132+
onChange?.(values);
136133
this.setState({ items });
137134
}
138135

139136
onRemove(removed: SettingField) {
140-
const { field } = this.props;
137+
const { onChange, value } = this.props;
141138
const { items } = this.state;
142-
const values = field.getValue() || [];
139+
const values = value || [];
143140
let i = items.indexOf(removed);
144141
items.splice(i, 1);
145142
values.splice(i, 1);
@@ -150,7 +147,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
150147
}
151148
removed.remove();
152149
const pureValues = values.map((item: any) => typeof(item) === 'object' ? Object.assign({}, item):item);
153-
field?.setValue(pureValues);
150+
onChange?.(pureValues);
154151
this.setState({ items });
155152
}
156153

0 commit comments

Comments
 (0)