diff --git a/packages/core/client/src/data-source/data-block/DataBlockProvider.tsx b/packages/core/client/src/data-source/data-block/DataBlockProvider.tsx index b758d97062..89a9786308 100644 --- a/packages/core/client/src/data-source/data-block/DataBlockProvider.tsx +++ b/packages/core/client/src/data-source/data-block/DataBlockProvider.tsx @@ -13,7 +13,6 @@ import { ACLCollectionProvider } from '../../acl/ACLProvider'; import { UseRequestOptions, UseRequestService } from '../../api-client'; import { DataBlockCollector, FilterParam } from '../../filter-provider/FilterProvider'; import { withDynamicSchemaProps } from '../../hoc/withDynamicSchemaProps'; -import { KeepAliveContextCleaner } from '../../route-switch/antd/admin-layout/KeepAlive'; import { Designable, useDesignable } from '../../schema-component'; import { AssociationProvider, @@ -192,12 +191,9 @@ export const DataBlockProvider: FC> = withDynamicSche - {/* Must be placed inside BlockRequestProvider because BlockRequestProvider uses KeepAliveContext */} - - - {children} - - + + {children} + diff --git a/packages/core/client/src/schema-component/antd/association-field/AssociationFieldProvider.tsx b/packages/core/client/src/schema-component/antd/association-field/AssociationFieldProvider.tsx index a949ef63d5..190a5e6f23 100644 --- a/packages/core/client/src/schema-component/antd/association-field/AssociationFieldProvider.tsx +++ b/packages/core/client/src/schema-component/antd/association-field/AssociationFieldProvider.tsx @@ -14,6 +14,7 @@ import React, { useEffect, useMemo, useState } from 'react'; import { useAPIClient, useRequest } from '../../../api-client'; import { useCollectionManager } from '../../../data-source/collection'; import { markRecordAsNew } from '../../../data-source/collection-record/isNewRecord'; +import { useKeepAlive } from '../../../route-switch/antd/admin-layout/KeepAlive'; import { useSchemaComponentContext } from '../../hooks'; import { AssociationFieldContext } from './context'; @@ -85,7 +86,13 @@ export const AssociationFieldProvider = observer( }, ); + const { active } = useKeepAlive(); + useEffect(() => { + if (!active) { + return; + } + setLoading(true); if (!collectionField) { setLoading(false); @@ -136,7 +143,7 @@ export const AssociationFieldProvider = observer( } setLoading(false); - }, [currentMode, collectionField, field]); + }, [currentMode, collectionField, field, active]); if (loading || rLoading) { return null;