You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

默认情况下RTK Query会将所有请求数据存入Redux store吗?

RTK Query 存储机制与使用建议

默认存储行为

  • 默认情况下RTK Query确实会把所有成功请求返回的完整响应数据存入Redux Store,对应存在你调用createApi时指定的reducer路径下,数据会按请求的endpoint名称、参数做分组缓存。
  • 如果你只需要存储部分返回字段,可以给对应endpoint配置transformResponse回调,在数据存入Store之前就裁剪掉不需要的字段,示例配置如下:
const api = createApi({
  reducerPath: 'api',
  baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
  endpoints: (builder) => ({
    getUser: builder.query({
      query: (id) => `/user/${id}`,
      // 仅保留需要的字段再存入store
      transformResponse: (response) => {
        return {
          id: response.id,
          name: response.name,
          avatar: response.avatar
        }
      }
    })
  })
})

内存占用相关的使用建议

你不需要担心默认全量存储会带来不可控的内存问题,RTK Query内置了缓存自动清理机制:

  • 默认会给未被组件引用的缓存数据设置60秒的过期时间,到期后自动从Store中清除,你也可以全局或者针对单个endpoint自定义keepUnusedDataFor参数调整过期时长。
  • 你也可以手动调用invalidateTags、refetch等方法主动清理不需要的缓存数据。

至于是否推荐用RTK Query管理所有API请求,答案是肯定的,核心原因如下:

  • 不需要自己手写大量请求、缓存、loading状态、错误处理相关的重复模板代码,开发效率提升非常明显
  • 内置的缓存、标签失效、请求去重能力能覆盖绝大多数业务场景,你可以通过配置灵活控制存储的内容和生命周期,完全可以满足“只存部分数据”的需求
  • 即使你有部分数据不需要走RTK Query的缓存,也可以给对应endpoint设置keepUnusedDataFor: 0,请求完成后立即清除缓存,相当于只做请求转发不存储,完全不会带来额外内存开销

内容的提问来源于stack exchange,提问作者ishowman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:18:03