javascript - Hvordan bruke SWR med generisk T?
Jeg har pakket SWR inn i en egendefinert hook:
import useSWR from 'swr';
export enum MethodTypes {
POST = 'POST',
PUT = 'PUT',
GET = 'GET',
DELETE = 'DELETE',
PATCH = 'PATCH'
}
type QueryBody = {
method: MethodTypes;
body: Object;
};
const useFetch = <T>(url: string, dataObj: QueryBody) => {
const fetcher = async () => {
return await fetch(url, {
method: dataObj.method,
body: JSON.stringify(dataObj.body)
}).then((res) => {
return res.json();
});
};
const { data, error } = useSWR<T>(fetcher);
return {
data,
error
};
};
export default useFetch;
Og jeg kaller det:
const { data } = useFetch<Cart>('myUrl', {
method: MethodTypes.POST,
body: {
myBodyObj
}
});
Vognstype:
export type Cart = {
cartId: string;
items: Array<CartItem>;
};
Jeg kan se at jeg får en 200-respons, så kallet går gjennom, men dataene mine er alltid undefined. Hva har jeg gått glipp av her?
Svar #1
Det første argumentet til useSWR bør være nøkkelen.