首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux RTK查询似乎没有缓存请求

Redux RTK查询似乎没有缓存请求
EN

Stack Overflow用户
提问于 2022-09-05 11:55:48
回答 1查看 48关注 0票数 0

我从两个具有相同参数的不同组件调用RTK-Query懒散钩子。

github.api.ts

代码语言:javascript
复制
    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
    } = githubApi

store.index.ts

代码语言:javascript
复制
    export const store = configureStore({
      reducer: {
        [githubApi.reducerPath]: githubApi.reducer,
      },
      middleware: (getDefaultMiddleware) => 
    getDefaultMiddleware().concat(githubApi.middleware)
    })

因此,在我的第一个组件中,我这样称呼它:

代码语言:javascript
复制
    const [fetchRepos, { isFetching: areReposLoading, data: repos }] = useLazyGetUserReposQuery()

    fetchRepos(`sss`)

然后我更改位置(卸载第一个组件并切换到另一个组件),在第二个(另一个)组件中,我用相同的参数(字符串sss)调用相同的钩子,但是给我缓存的值RTK-Query触发另一个请求,并给出相同的数据返回,但不是从缓存。

下面是指向整个src代码的链接:github.rtk.query.app

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-05 13:37:46

如果使用useLazyQuery,则必须向触发器函数指示您实际上希望使用缓存值,而不对服务器启动新请求:

代码语言:javascript
复制
    fetchRepos(`sss`, true)

引用文档:useLazyQuery

备注 当调用从LazyQuery返回的触发器函数时,即使存在缓存的数据,它也总是向服务器发起新的请求。将preferCacheValue(函数的第二个参数)设为true,如果希望它立即返回缓存的值(如果存在的话)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73608997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档