我在解决常见问题时遇到了麻烦,应该由RTKQuery来处理。
当我的应用程序启动时,它将加载configuration。这个配置将包含像baseUrl这样的东西,在头部中使用的一些数据等。
我已经使用createApi(...)创建了配置切片:
export interface Configuration {
baseUrl: string;
language: string;
}
export const configurationApi = createApi({
reducerPath: "configuration",
baseQuery: fetchBaseQuery({ baseUrl: "/api" }),
endpoints: (builder) => ({
loadConfiguration: builder.query<Configuration, unknown>({ //the generic expects second arugment...
query: () => "/configuration",
}),
}),
});我想在下面的请求中使用加载的配置的baseUrl和语言。文档指出prepareHeaders是执行此操作的正确位置:
export const testApi = createApi({
reducerPath: "test",
baseQuery: fetchBaseQuery({
baseUrl: "/api", //need this from configuration
prepareHeaders: (headers, { getState }) => {
const state = getState() as RootState;
// nees to get language from configuration我无法在testApi中访问来自configuration的结果
我在文档/示例中找不到如何访问任何端点的数据。
假设我们有端点loadUser:
endpoints: (builder) => ({
loadUser: builder.query<Partial<UserResponse>, UserRequest>({
query: ({ userId }) => ({
url: "/api/user"
}),
}),
}),有没有简单的方法来访问最新的数据(关于用户ID,仅仅是用户端点的最新数据)?这看起来应该是微不足道的,但事实并非如此。
提前谢谢。
发布于 2021-11-08 21:47:03
const selector = api.endpoints.foo.select(argumentLikeInTheHook)
const result = selector(getState())但请记住,如果没有组件正在使用该端点数据,则将在(默认情况下) 60秒后对其进行缓存收集。
https://stackoverflow.com/questions/69884254
复制相似问题