* feat: upgrade formily * fix: upgrade @formily/json-schema * fix: optimizing performance * fix: performance code * refactor: `React.memo` and `observer` component add `displayName` property * fix: add cache to Schema.compile * feat: 优化代码 * fix: 修复卡顿最终的问题 * Update SchemaComponentProvider.tsx * feat: 再次优化代码 * feat: optimized code --------- Co-authored-by: dream2023 <1098626505@qq.com>
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import {
|
|
CollectionHistoryProvider,
|
|
CollectionManagerProvider,
|
|
registerField,
|
|
SchemaComponentOptions,
|
|
SchemaInitializerProvider,
|
|
} from '@nocobase/client';
|
|
import React, { useEffect } from 'react';
|
|
import { AppendsTreeSelect } from './components/AppendsTreeSelect';
|
|
import { SnapshotOwnerCollectionFieldsSelect } from './components/SnapshotOwnerCollectionFieldsSelect';
|
|
import { snapshot } from './interface';
|
|
import { SnapshotBlockInitializers } from './SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializers';
|
|
import { SnapshotBlockInitializersDetailItem } from './SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializersDetailItem';
|
|
import { SnapshotBlockProvider } from './SnapshotBlock/SnapshotBlockProvider';
|
|
import { SnapshotRecordPicker } from './SnapshotRecordPicker';
|
|
|
|
const SnapshotField = React.memo((props) => {
|
|
useEffect(() => {
|
|
registerField(snapshot.group, snapshot.name as string, snapshot);
|
|
}, []);
|
|
|
|
return (
|
|
<CollectionManagerProvider
|
|
interfaces={{
|
|
snapshot,
|
|
}}
|
|
>
|
|
<CollectionHistoryProvider>
|
|
<SchemaInitializerProvider
|
|
initializers={{
|
|
SnapshotBlockInitializers,
|
|
}}
|
|
>
|
|
<SchemaComponentOptions
|
|
components={{
|
|
SnapshotRecordPicker,
|
|
SnapshotBlockProvider,
|
|
SnapshotBlockInitializersDetailItem,
|
|
AppendsTreeSelect,
|
|
SnapshotOwnerCollectionFieldsSelect,
|
|
}}
|
|
>
|
|
{props.children}
|
|
</SchemaComponentOptions>
|
|
</SchemaInitializerProvider>
|
|
</CollectionHistoryProvider>
|
|
</CollectionManagerProvider>
|
|
);
|
|
});
|
|
SnapshotField.displayName = 'SnapshotField';
|
|
|
|
export default SnapshotField;
|