Skip to content

Commit 5791784

Browse files
committed
fix: Fix non-cached problem with useSWRInfinite wrapper
1 parent f9f6377 commit 5791784

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ export const ArticlePage: NextPage<ArticlePageProps> = ({ slug, initialData, pre
138138

139139
```tsx
140140
const { data, size, setSize } = sdk.useMyQueryInfinite(
141+
'id_for_caching',
141142
(pageIndex, previousPageData) => {
142143
if (previousPageData && !previousPageData.posts.length) {
143144
return null // reached the end

src/visitor.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,15 +172,17 @@ export class SWRVisitor extends ClientSideBaseVisitor<
172172
if (enabledInfinite) {
173173
codes.push(`use${pascalCase(
174174
o.node.name.value
175-
)}Infinite(getKey: SWRInfiniteKeyLoader<${o.operationResultType}, ${
176-
o.operationVariablesTypes
177-
}>, variables${optionalVariables ? '?' : ''}: ${
175+
)}Infinite(id: string, getKey: SWRInfiniteKeyLoader<${
176+
o.operationResultType
177+
}, ${o.operationVariablesTypes}>, variables${
178+
optionalVariables ? '?' : ''
179+
}: ${
178180
o.operationVariablesTypes
179181
}, config?: SWRInfiniteConfigInterface<${o.operationResultType}>) {
180182
return useSWRInfinite<${o.operationResultType}>(
181183
utilsForInfinite.generateGetKey<${o.operationResultType}, ${
182184
o.operationVariablesTypes
183-
}>(getKey),
185+
}>(id, getKey),
184186
utilsForInfinite.generateFetcher<${o.operationResultType}, ${
185187
o.operationVariablesTypes
186188
}>(sdk.${o.node.name.value}, variables),
@@ -212,11 +214,11 @@ export function getSdkWithHooks(client: GraphQLClient, withWrapper: SdkFunctionW
212214
${
213215
this._enabledInfinite
214216
? ` const utilsForInfinite = {
215-
generateGetKey: <Data = unknown, Variables = unknown>(getKey: SWRInfiniteKeyLoader<Data, Variables>) => (pageIndex: number, previousData: Data | null) => {
217+
generateGetKey: <Data = unknown, Variables = unknown>(id: string, getKey: SWRInfiniteKeyLoader<Data, Variables>) => (pageIndex: number, previousData: Data | null) => {
216218
const key = getKey(pageIndex, previousData)
217-
return key ? [key] : null
219+
return key ? [id, key] : null
218220
},
219-
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (...params: unknown[]) => query(Object.assign({}, variables, ...params))
221+
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (...params: unknown[]) => query(Object.assign({}, variables, ...params.slice(1)))
220222
}\n`
221223
: ''
222224
}${

tests/swr.spec.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -292,11 +292,11 @@ export type SdkWithHooks = ReturnType<typeof getSdkWithHooks>;`
292292
export function getSdkWithHooks(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {
293293
const sdk = getSdk(client, withWrapper);
294294
const utilsForInfinite = {
295-
generateGetKey: <Data = unknown, Variables = unknown>(getKey: SWRInfiniteKeyLoader<Data, Variables>) => (pageIndex: number, previousData: Data | null) => {
295+
generateGetKey: <Data = unknown, Variables = unknown>(id: string, getKey: SWRInfiniteKeyLoader<Data, Variables>) => (pageIndex: number, previousData: Data | null) => {
296296
const key = getKey(pageIndex, previousData)
297-
return key ? [key] : null
297+
return key ? [id, key] : null
298298
},
299-
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (...params: unknown[]) => query(Object.assign({}, variables, ...params))
299+
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (...params: unknown[]) => query(Object.assign({}, variables, ...params.slice(1)))
300300
}
301301
return {
302302
...sdk,
@@ -306,9 +306,9 @@ export function getSdkWithHooks(client: GraphQLClient, withWrapper: SdkFunctionW
306306
useFeed2(key: SWRKeyInterface, variables: Feed2QueryVariables, config?: SWRConfigInterface<Feed2Query>) {
307307
return useSWR<Feed2Query>(key, () => sdk.feed2(variables), config);
308308
},
309-
useFeed2Infinite(getKey: SWRInfiniteKeyLoader<Feed2Query, Feed2QueryVariables>, variables: Feed2QueryVariables, config?: SWRInfiniteConfigInterface<Feed2Query>) {
309+
useFeed2Infinite(id: string, getKey: SWRInfiniteKeyLoader<Feed2Query, Feed2QueryVariables>, variables: Feed2QueryVariables, config?: SWRInfiniteConfigInterface<Feed2Query>) {
310310
return useSWRInfinite<Feed2Query>(
311-
utilsForInfinite.generateGetKey<Feed2Query, Feed2QueryVariables>(getKey),
311+
utilsForInfinite.generateGetKey<Feed2Query, Feed2QueryVariables>(id, getKey),
312312
utilsForInfinite.generateFetcher<Feed2Query, Feed2QueryVariables>(sdk.feed2, variables),
313313
config);
314314
},
@@ -318,9 +318,9 @@ export function getSdkWithHooks(client: GraphQLClient, withWrapper: SdkFunctionW
318318
useFeed4(key: SWRKeyInterface, variables?: Feed4QueryVariables, config?: SWRConfigInterface<Feed4Query>) {
319319
return useSWR<Feed4Query>(key, () => sdk.feed4(variables), config);
320320
},
321-
useFeed4Infinite(getKey: SWRInfiniteKeyLoader<Feed4Query, Feed4QueryVariables>, variables?: Feed4QueryVariables, config?: SWRInfiniteConfigInterface<Feed4Query>) {
321+
useFeed4Infinite(id: string, getKey: SWRInfiniteKeyLoader<Feed4Query, Feed4QueryVariables>, variables?: Feed4QueryVariables, config?: SWRInfiniteConfigInterface<Feed4Query>) {
322322
return useSWRInfinite<Feed4Query>(
323-
utilsForInfinite.generateGetKey<Feed4Query, Feed4QueryVariables>(getKey),
323+
utilsForInfinite.generateGetKey<Feed4Query, Feed4QueryVariables>(id, getKey),
324324
utilsForInfinite.generateFetcher<Feed4Query, Feed4QueryVariables>(sdk.feed4, variables),
325325
config);
326326
}

0 commit comments

Comments
 (0)