diff --git a/packages/core/client/src/modules/actions/associate/AssociateActionProvider.tsx b/packages/core/client/src/modules/actions/associate/AssociateActionProvider.tsx index 18be2d76b9..5e2a49c7c4 100644 --- a/packages/core/client/src/modules/actions/associate/AssociateActionProvider.tsx +++ b/packages/core/client/src/modules/actions/associate/AssociateActionProvider.tsx @@ -7,7 +7,7 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ -import React, { useState, useContext } from 'react'; +import React, { useState, useContext, useEffect } from 'react'; import { RecordPickerProvider, RecordPickerContext } from '../../../schema-component/antd/record-picker'; import { SchemaComponentOptions, @@ -41,9 +41,16 @@ const useTableSelectorProps = () => { export const AssociateActionProvider = (props) => { const [selectedRows, setSelectedRows] = useState([]); const collection = useCollection(); - const { resource, service, block, __parent } = useBlockRequestContext(); + const { resource, block, __parent } = useBlockRequestContext(); const actionCtx = useActionContext(); const { isMobile } = useOpenModeContext() || {}; + const [associationData, setAssociationData] = useState([]); + useEffect(() => { + resource?.list?.().then((res) => { + setAssociationData(res.data?.data || []); + }); + }, [resource]); + const pickerProps = { size: 'small', onChange: props?.onChange, @@ -73,8 +80,8 @@ export const AssociateActionProvider = (props) => { }; const getFilter = () => { const targetKey = collection?.filterTargetKey || 'id'; - if (service.data?.data) { - const list = service.data?.data.map((option) => option[targetKey]).filter(Boolean); + if (associationData) { + const list = associationData.map((option) => option[targetKey]).filter(Boolean); const filter = list.length ? { $and: [{ [`${targetKey}.$ne`]: list }] } : {}; return filter; }