tachybase_todo/packages/plugins/snapshot-field/src/client/index.tsx
chenos e6a2a292b3
feat: upgrade formily (#1880)
* 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>
2023-06-06 19:33:04 +08:00

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;