fix: refresh association field data after page switching (#6114)

This commit is contained in:
Zeke Zhang 2025-01-22 17:17:29 +08:00 committed by GitHub
parent a55e8a8cca
commit 03db13f241
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 8 deletions

View File

@ -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<Partial<AllDataBlockProps>> = withDynamicSche
<ACLCollectionProvider>
<DataBlockResourceProvider>
<BlockRequestProvider>
{/* Must be placed inside BlockRequestProvider because BlockRequestProvider uses KeepAliveContext */}
<KeepAliveContextCleaner>
<DataBlockCollector params={props.params}>
<RerenderDataBlockProvider>{children}</RerenderDataBlockProvider>
</DataBlockCollector>
</KeepAliveContextCleaner>
<DataBlockCollector params={props.params}>
<RerenderDataBlockProvider>{children}</RerenderDataBlockProvider>
</DataBlockCollector>
</BlockRequestProvider>
</DataBlockResourceProvider>
</ACLCollectionProvider>

View File

@ -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;