fix: refresh entire block after adding field (#6117)

This commit is contained in:
Zeke Zhang 2025-01-23 10:52:53 +08:00 committed by GitHub
parent 4ca070a7e6
commit c14530b9f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -26,7 +26,11 @@ import {
} from '../../../data-source/collection-record/CollectionRecordProvider'; } from '../../../data-source/collection-record/CollectionRecordProvider';
import { isNewRecord, markRecordAsNew } from '../../../data-source/collection-record/isNewRecord'; import { isNewRecord, markRecordAsNew } from '../../../data-source/collection-record/isNewRecord';
import { FlagProvider } from '../../../flag-provider'; import { FlagProvider } from '../../../flag-provider';
import { NocoBaseRecursionField, RefreshComponentProvider } from '../../../formily/NocoBaseRecursionField'; import {
NocoBaseRecursionField,
RefreshComponentProvider,
useRefreshComponent,
} from '../../../formily/NocoBaseRecursionField';
import { RecordIndexProvider, RecordProvider } from '../../../record-provider'; import { RecordIndexProvider, RecordProvider } from '../../../record-provider';
import { isPatternDisabled, isSystemField } from '../../../schema-settings'; import { isPatternDisabled, isSystemField } from '../../../schema-settings';
import { import {
@ -116,6 +120,12 @@ const ToManyNester = observer(
const recordData = useCollectionRecordData(); const recordData = useCollectionRecordData();
const collection = useCollection(); const collection = useCollection();
const update = useUpdate(); const update = useUpdate();
const refreshComponent = useRefreshComponent();
const refresh = useCallback(() => {
update();
refreshComponent?.();
}, [update, refreshComponent]);
if (!Array.isArray(field.value)) { if (!Array.isArray(field.value)) {
field.value = []; field.value = [];
@ -156,7 +166,7 @@ const ToManyNester = observer(
} }
`} `}
> >
<RefreshComponentProvider refresh={update}> <RefreshComponentProvider refresh={refresh}>
{field.value.map((value, index) => { {field.value.map((value, index) => {
let allowed = allowDissociate; let allowed = allowDissociate;
if (!allowDissociate) { if (!allowDissociate) {