我只是好奇知道填充extra
和extraOptions
的方法,以及参数必须按顺序传递的位置,以便它们可以被填充,然后可以用于创建一些基于条件的场景。queryFn
本身用于在Redux-Toolkit(RTK)查询(RTKQ)中创建自定义查询函数。
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
const shiprocketApiSlice = createApi({
baseQuery: fetchBaseQuery({
baseUrl: "https://apiv2.shiprocket.in/v1/external",
prepareHeaders: (headers, { getState, extra, type, endpoint }) => {
const token =
"...someToken";
token && headers.set("authorization", `Bearer ${token}`);
console.log(
"the extra value of the ====> ",
extra,
getState(),
type,
endpoint,
headers
);
return headers;
},
}),
endpoints: (builder) => ({
updateUser: builder.mutation({
query: (user) => {
return {
url: `/users/${user.queryArg}`,
headers: {
"X-Scope": "1234567890",
},
};
},
}),
createOrderShiprocket: builder.mutation({
queryFn: async (args, api, extraOptions, baseQuery) => {
console.log(
"printin all the agrs of the qrfn to see what exactly it is ===> ",
args,
api,
"extraoptions==>",
extraOptions,
"base==>",
baseQuery
);
const response = await baseQuery(args, api, extraOptions);
console.log("the response ==>", response);
return { error: { message: "error occured" } };
},
}),
}),
});
export const { useCreateOrderShiprocketMutation, useUpdateUserMutation } =
shiprocketApiSlice;
字符串
我用了这个文件里的钩子
"use client";
import React from "react";
import {
useCreateOrderShiprocketMutation,
useUpdateUserMutation,
} from "@/store/features/shiprocket/shiprocketApiSlice";
const TestFolderPage = () => {
const [createOrderShiprocket, { data: TheOrderList }] =
useCreateOrderShiprocketMutation();
const [updateUser, { data: updatedData }] = useUpdateUserMutation();
const handleClick = () => {
console.log("the click");
updateUser({ queryArg: 12344 });
createOrderShiprocket({ userId: 123 });
};
return <div onClick={handleClick}>TestFolderPage</div>;
};
export default TestFolderPage;
型
2条答案
按热度按时间kupeojn61#
Redux-Toolkit(RTK)query(RTKQ)中
extra
和extraOptions
有什么用?extra
第一代作为
thunk.extraArgument
提供给configureStore getDefaultMiddleware选项。BaseQueryApi
字符串
extra
是配置Redux存储时与Redux-Toolkit的Thunk中间件一起使用的额外参数。有关详细信息,请参阅自定义包含的中间件。基本示例如下:型
这个
extraArgument
暴露在createAsyncThunk
操作的thunkApi
中,显然是Redux-Toolkit Query的prepareHeaders
函数签名的一部分。型
extraOptions
参见文档中的
extraOptions
:很简单,
extraOptions
是一个可选对象,作为第三个参数传递给提供的baseQuery
函数,例如,在代码示例中,fetchBaseQuery
返回的基本查询函数。参见fetchBaseQuery
签名。型
使用
query
和queryFn
时如何填充它们?我已经在上面介绍了在配置存储时在哪里以及如何指定/添加
extra
值。extraOptions
可以为每个端点指定。范例:
型
在需要定制基本查询函数之前,这一点并不特别有用。
例如,一个相当简单的定制就是为失败的查询添加自动重试。
的字符串
这完全取决于您和您的应用的具体用例,以及需要哪些
extra
和extraOptions
是相关的和/或有用的。vngu2lb82#
修改
fetchBaseQuery
使用extra
:目前,
prepareHeaders
中的extra
参数没有被使用,因为它没有在任何地方设置。如果你想使用它,你需要在调用fetchBaseQuery
时为extra
提供一个值。但是,通常extra
用于更高级的场景,比如当你有一个中间件设置它时。在
queryFn
中传递和使用extraOptions
:为了演示如何传递和使用
extraOptions
,我将修改createOrderShiprocket
在组件中的用法。字符串
然后:
型