我从两个具有相同参数的不同组件调用RTK-Query懒散钩子。
github.api.ts
export const githubApi = createApi({
reducerPath: "github/api",
baseQuery: fetchBaseQuery({
baseUrl: "https://api.github.com/"
}),
endpoints: build => ({
getUserRepos: build.query<IRepo[], string>({
query: (username: string) => ({
url: `users/${username}/repos`
})
})
}),
refetchOnFocus: true,
})
export const {
useLazyGetUserReposQuery
} = githubApistore.index.ts
export const store = configureStore({
reducer: {
[githubApi.reducerPath]: githubApi.reducer,
},
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat(githubApi.middleware)
})因此,在我的第一个组件中,我这样称呼它:
const [fetchRepos, { isFetching: areReposLoading, data: repos }] = useLazyGetUserReposQuery()
fetchRepos(`sss`)然后我更改位置(卸载第一个组件并切换到另一个组件),在第二个(另一个)组件中,我用相同的参数(字符串sss)调用相同的钩子,但是给我缓存的值RTK-Query触发另一个请求,并给出相同的数据返回,但不是从缓存。

下面是指向整个src代码的链接:github.rtk.query.app
发布于 2022-09-05 13:37:46
如果使用useLazyQuery,则必须向触发器函数指示您实际上希望使用缓存值,而不对服务器启动新请求:
fetchRepos(`sss`, true)引用文档:useLazyQuery
备注 当调用从LazyQuery返回的触发器函数时,即使存在缓存的数据,它也总是向服务器发起新的请求。将preferCacheValue(函数的第二个参数)设为true,如果希望它立即返回缓存的值(如果存在的话)。
https://stackoverflow.com/questions/73608997
复制相似问题