New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added queryOptions to ReferenceManyField (#9669) #9679
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a new feature, so it has to target next
rather than master
. Also, please add a unit test to make sure the feature works (e.g.
react-admin/packages/ra-core/src/controller/edit/useEditController.spec.tsx
Lines 176 to 201 in 5e2ed7d
it('should accept a meta in query options', async () => { | |
const getOne = jest | |
.fn() | |
.mockImplementationOnce(() => | |
Promise.resolve({ data: { id: 0, title: 'hello' } }) | |
); | |
const dataProvider = ({ getOne } as unknown) as DataProvider; | |
render( | |
<CoreAdminContext dataProvider={dataProvider}> | |
<EditController | |
{...defaultProps} | |
resource="posts" | |
queryOptions={{ meta: { foo: 'bar' } }} | |
> | |
{() => <div />} | |
</EditController> | |
</CoreAdminContext> | |
); | |
await waitFor(() => { | |
expect(getOne).toHaveBeenCalledWith('posts', { | |
id: 12, | |
meta: { foo: 'bar' }, | |
}); | |
}); | |
}); | |
}); |
@@ -178,6 +181,7 @@ export const useReferenceManyFieldController = < | |||
pagination: { page, perPage }, | |||
sort, | |||
filter: filterValues, | |||
meta, | |||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should also pass the remaining quetry options to the query, see e.g.
...otherQueryOptions, |
@@ -26,6 +26,7 @@ export interface UseReferenceManyFieldControllerParams< | |||
sort?: SortPayload; | |||
source?: string; | |||
target: string; | |||
queryOptions?: { meta?: any }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bad type. This should be UseGetManyReferenceHookOptions<RecordType>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mean that I should change it like this?
export interface UseGetManyReferenceHookOptions<RecordType> {
meta?: any
}
...
queryOptions?: UseGetManyReferenceHookOptions<RecordType>
This is the type of queryOptions
in ReferenceOneField.tsx
, which I used as a reference
queryOptions?: UseQueryOptions<{
data: ReferenceRecordType[];
total: number;
}> & { meta?: any };
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed there is no UseGetManyReferenceHookOptions
. But I believe what @fzaninotto means is that you should use the same type as what useGetManyReference()
expects, plus meta
, i.e.:
queryOptions?: UseQueryOptions<{ data: RecordType[]; total: number }, Error> & { meta?: any };
@@ -118,6 +120,7 @@ export interface ReferenceManyFieldProps< | |||
reference: string; | |||
sort?: SortPayload; | |||
target: string; | |||
queryOptions?: { meta?: any }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
Closes #9669
queryOptions
toReferenceManyField.tsx
anduseReferenceManyFieldController.ts
<RecordType>
toconst record = useRecordContext(props)
inReferenceManyField.tsx