Skip to content

Commit aa8a48c

Browse files
authored
Merge pull request #1410 from alibaba/fix-moment
feat: 迭代开发
2 parents 1402fcc + 7bff40d commit aa8a48c

File tree

3 files changed

+19
-24
lines changed

3 files changed

+19
-24
lines changed

packages/form-render/src/models/filterValuesHidden.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ export default (_values: any, flattenSchema: object) => {
3434
};
3535

3636
const recursiveObj = (obj: any, prePath?: string, parentData?: any) => {
37-
const result = Object.create(Object.getPrototypeOf(obj));
3837

3938
for (let key of Object.keys(obj)) {
4039
const item = obj[key];
@@ -50,25 +49,26 @@ export default (_values: any, flattenSchema: object) => {
5049
if (schema?.hidden) {
5150
const hidden = transformHidden(schema.hidden, _values, parentData);
5251
if (hidden) {
52+
obj[key] = undefined;
5353
continue;
5454
}
5555
}
5656

5757
if (isObject(item)) {
58-
result[key] = recursiveObj(item, path, parentData);
58+
obj[key] = recursiveObj(item, path, parentData);
5959
continue;
6060
}
6161

6262
if (isArray(item) && schema?.items) {
63-
result[key] = recursiveArray(item, path) || [];
63+
obj[key] = recursiveArray(item, path) || [];
6464
continue;
6565
}
6666

67-
result[key] = item;
67+
obj[key] = item;
6868
}
6969

70-
return result;
70+
return obj;
7171
};
7272

73-
return recursiveObj(_values);
73+
return recursiveObj(_values) || {};
7474
}

packages/form-render/src/models/filterValuesUndefined.ts

+8-14
Original file line numberDiff line numberDiff line change
@@ -20,34 +20,28 @@ export default (values: any, notFilter?: boolean) => {
2020
};
2121

2222
const recursiveObj = (obj: any, filter = true) => {
23-
let result = Object.create(Object.getPrototypeOf(obj));
24-
2523
for (let key of Object.keys(obj)) {
2624
const item = obj[key];
25+
2726
if (isObject(item)) {
28-
result[key] = recursiveObj(item);
29-
continue;
27+
obj[key] = recursiveObj(item);
3028
}
29+
3130
if (isArray(item)) {
3231
const data = recursiveArray(item);
3332
if (notFilter || !data) {
34-
result[key] = data;
33+
obj[key] = data;
3534
} else {
36-
result[key] = (data || []).filter((item: any) => item !== undefined);
35+
obj[key] = (data || []).filter((item: any) => item !== undefined);
3736
}
38-
continue;
39-
}
40-
if (item !== undefined) {
41-
result[key] = item;
4237
}
4338
}
4439

45-
result = omitBy(result, isUndefined);
46-
if (Object.keys(result).length === 0 && filter) {
40+
obj = omitBy(obj, isUndefined);
41+
if (Object.keys(obj).length === 0 && filter) {
4742
return undefined;
4843
}
49-
50-
return result;
44+
return obj;
5145
};
5246

5347
return recursiveObj(values) || {};

packages/form-render/src/models/useForm.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { useRef } from 'react';
22
import { Form } from 'antd';
3+
import { cloneDeep } from 'lodash-es';
34

45
import { transformFieldsData, getSchemaFullPath } from './formCoreUtils';
56
import { parseBindToValues, parseValuesToBind } from './bindValues';
6-
import { _isMatch, _set, _get, _has, _cloneDeep, _merge, _mergeWith, isFunction, isObject, isArray, _isUndefined, hasFuncProperty } from '../utils';
7+
import { _isMatch, _set, _get, _has, _merge, _mergeWith, isFunction, isObject, isArray, _isUndefined, hasFuncProperty } from '../utils';
78
import filterValuesUndefined from './filterValuesUndefined';
89
import filterValuesHidden from '../models/filterValuesHidden';
910
import { flattenSchema as flatten } from './flattenSchema';
@@ -123,7 +124,7 @@ const useForm = () => {
123124
return;
124125
}
125126

126-
const schema = _cloneDeep(schemaRef.current);
127+
const schema = cloneDeep(schemaRef.current);
127128
Object.keys(obj || {}).forEach(path => {
128129
updateSchemaByPath(path, obj[path], schema);
129130
});
@@ -138,7 +139,7 @@ const useForm = () => {
138139
return;
139140
}
140141

141-
const schema = _cloneDeep(schemaRef.current);
142+
const schema = cloneDeep(schemaRef.current);
142143
updateSchemaByPath(_path, _newSchema, schema);
143144
handleSchemaUpdate(schema);
144145
}
@@ -163,7 +164,7 @@ const useForm = () => {
163164

164165
// 获取表单数据
165166
xform.getValues = (nameList?: any, filterFunc?: any) => {
166-
let values = form.getFieldsValue(getFieldName(nameList), filterFunc);
167+
let values = cloneDeep(form.getFieldsValue(getFieldName(nameList), filterFunc));
167168
values = filterValuesHidden(values, flattenSchemaRef.current);
168169
values = filterValuesUndefined(values);
169170
return parseValuesToBind(values, flattenSchemaRef.current);

0 commit comments

Comments
 (0)