refactor: try reduce
This commit is contained in:
parent
e8497f8f8e
commit
25e41e479e
@ -4,12 +4,6 @@ import { connect, useFieldSchema } from '@formily/react';
|
||||
import { useCollectionManager, useRequest } from '@nocobase/client';
|
||||
import _ from 'lodash';
|
||||
|
||||
interface Option {
|
||||
name: string | number;
|
||||
id: string;
|
||||
children?: Option[];
|
||||
}
|
||||
|
||||
const AssociationCascader = connect((props) => {
|
||||
const fieldSchema = useFieldSchema();
|
||||
const collection = fieldSchema['collectionName'];
|
||||
@ -32,24 +26,20 @@ const AssociationCascader = connect((props) => {
|
||||
});
|
||||
|
||||
const options = useMemo(() => {
|
||||
const dict = {};
|
||||
data?.data.forEach((item) => {
|
||||
if (item[associationField]) {
|
||||
dict[item[associationField][joinTitleField]] ??= [];
|
||||
dict[item[associationField][joinTitleField]].push(item[titleField]);
|
||||
}
|
||||
});
|
||||
const options: Option[] = [];
|
||||
_.forEach(dict, (values: any, key) => {
|
||||
options.push({
|
||||
name: key,
|
||||
id: key,
|
||||
children: values.map((value) => ({
|
||||
name: value,
|
||||
id: value,
|
||||
})),
|
||||
});
|
||||
});
|
||||
const dict: { [key: string]: string[] } =
|
||||
data?.data.reduce((acc, item) => {
|
||||
if (item[associationField]) {
|
||||
const key = item[associationField][joinTitleField];
|
||||
acc[key] ??= [];
|
||||
acc[key].push(item[titleField]);
|
||||
}
|
||||
return acc;
|
||||
}, {}) || {};
|
||||
const options = Object.entries(dict).map(([key, values]) => ({
|
||||
name: key,
|
||||
id: key,
|
||||
children: values.map((value) => ({ name: value, id: value })),
|
||||
}));
|
||||
return options;
|
||||
}, [associationField, joinTitleField, titleField, data?.data]);
|
||||
return <Cascader options={options} {...props} showSearch />;
|
||||
|
Loading…
Reference in New Issue
Block a user