Reputation: 142
I need to get correct typing for trigger, that I'm passing to the child component, cannot find how to type it.
...
const [trigger] = useLazyGetQuery();
...
<ChildComponent trigger={trigger} />
...
Child component where I need to type somehow RTK query trigger except any:
export const ChildComponent = ({ trigger }: { trigger: any }) => {...}
Upvotes: 3
Views: 1599
Reputation: 2497
Extending from sibling https://stackoverflow.com/a/78178220/1129950
In newer versions of RTK-Query LazyGetTriggerType
is not exported anymore. Instead TypedLazyQueryTrigger
needs to be used with:
import { TypedLazyQueryTrigger } from '@reduxjs/toolkit/query/react';
export type LazyGetTriggerType<T, U> = TypedLazyQueryTrigger<
U, // Response type
T, // Request parameters type
BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError>
>;
Upvotes: 0
Reputation: 433
Just extending from OP's answer, to use this generically you can define request param type and response type as generic types <T, U>
, so that it can be shared within your project:
export type LazyGetTriggerType<T, U> = LazyQueryTrigger<
QueryDefinition<
T, // Request parameters type
BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError, object, FetchBaseQueryMeta>,
never,
U, // Response type
"api" // Your reducerPath
>
>;
Upvotes: 2
Reputation: 142
I found correct type:
import { LazyQueryTrigger } from "@reduxjs/toolkit/dist/query/react/buildHooks";
import {
BaseQueryFn,
FetchArgs,
FetchBaseQueryError,
FetchBaseQueryMeta,
QueryDefinition,
} from "@reduxjs/toolkit/query";
import { IDemoRequest } from "../../../../../../../modules/Demo/apis/interfaces/IDemoRequest";
export type LazyGetTriggerType = LazyQueryTrigger<
QueryDefinition<
IDemoRequest, // Request parameters type
BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError, object, FetchBaseQueryMeta>,
never,
number[], // Response type
"api" // Your reducerPath
>
>;
Change any to LazyGetTriggerType
export const ChildComponent = ({ trigger }: { trigger: LazyGetTriggerType }) => {...}
Upvotes: 3