RTK查询缓存



如果我在RTK查询上不使用Cache tags,RTK查询会缓存我的数据吗?

参见

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'
const api = createApi({
baseQuery: fetchBaseQuery({
baseUrl: '/',
}),
endpoints: (build) => ({
getPosts: build.query({
query: () => '/posts',
}),
addPost: build.mutation({
query: (body) => ({
url: 'post',
method: 'POST',
body,
}),
}),
}),
})

如果我没有tagTypes: ['Post'],,RTK会查询后期数据吗?如果我没有tagTypes,我还能使用providesTagsinvalidatesTags吗?

标签不是用来缓存的,而是用来失效的。因此,是的,如果您使用查询(以及在一定程度上的突变(,它们将被独立缓存。

但是,没有标签就不能提供标签或使标签无效。

https://redux-toolkit.js.org/rtk-query/usage/cache-behavior#default-缓存行为

从文件

当订阅启动时,与端点一起使用的参数会被序列化,并在内部存储为请求的queryCacheKey。

所有订阅/查询都使用该queryCacheKey进行缓存。

意味着无论何时使用。。。使用new参数调用Query时,将发送new请求,否则,如果queryCacheKey与存储中的queryCacheKey匹配,则使用缓存数据。

您可以使用createApi上的keepUnusedDataFor参数或每个端点单独配置此行为。

标签用于自动重新获取,因此使查询/突变的成功/错误通过使给定端点的标签无效来触发对另一个查询端点的重新获取。通常,一个突变是为了使quer 的标签无效

最新更新