rtk-query
是一个用于数据获取和状态管理的库,它基于 Redux Toolkit 构建。在使用 rtk-query
时,你可能会遇到需要自定义请求头的情况,比如添加认证令牌。prepareHeaders
是一个函数,它允许你在发送请求之前修改请求头。
以下是如何使用 prepareHeaders
来访问并修改给定端点的请求头的步骤:
prepareHeaders
是一个接受当前请求头对象并返回一个新请求头对象的函数。假设你有一个 API 切片定义如下:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
const apiSlice = createApi({
baseQuery: fetchBaseQuery({
baseUrl: '/api',
prepareHeaders: (headers, { getState }) => {
// 从 Redux store 中获取认证令牌
const token = getState().auth.token;
if (token) {
headers.set('authorization', `Bearer ${token}`);
}
return headers;
},
}),
endpoints: (builder) => ({
getUser: builder.query({
query: (userId) => `/users/${userId}`,
}),
}),
});
export const { useGetUserQuery } = apiSlice;
在这个例子中,prepareHeaders
函数会检查 Redux store 中是否存在认证令牌,并将其添加到请求头中。
如果你遇到了无法正确设置请求头的问题,可能的原因包括:
prepareHeaders
函数被正确调用,并且返回了修改后的请求头对象。解决方法:
getState().auth.token
返回了预期的令牌值。prepareHeaders
函数中添加日志输出,检查请求头是否按预期被修改。通过以上步骤,你应该能够成功地使用 prepareHeaders
来访问并修改 rtk-query
切片的请求头。
没有搜到相关的文章