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

Redux Toolkit使用RTK Query时提示prepareHeaders不是函数如何解决

错误原因

fetchBaseQuery 的 prepareHeaders 配置要求传入函数类型,你当前直接传入了请求头对象,框架运行时尝试调用该配置执行逻辑,就会抛出「不是函数」的报错。
同时你原先的写法会在模块初始化时就读取一次localStorage中的token,后续token更新后也不会自动同步,存在请求携带旧token的问题。

修正代码

// Define a service using a base URL and expected endpoints
export const lfApi = createApi({
    reducerPath: 'lfApi',
    baseQuery: fetchBaseQuery({
        baseUrl: 'http://homestead.test/api/v1',
        prepareHeaders: (headers) => {
            // 每次请求都重新读取最新token
            const access_token = localStorage.getItem('rs_access_token');
            if (access_token) {
                headers.set('Authorization', `Bearer ${access_token}`);
            }
            headers.set('Content-Type', 'application/json');
            headers.set('Accept', 'application/json');
            return headers;
        },
    }),
    endpoints: (builder) => ({
        getUser: builder.query({
            query: (params) => `user`,
        }),
        getAgent: builder.query({
            query: (params) => `myagents/agents/${params}`,
        }),
    }),
});

// Export hooks for usage in functional components, which are
// auto-generated based on the defined endpoints
export const { useGetUserQuery, useGetAgentQuery } = lfApi;

内容的提问来源于stack exchange,提问作者Bon Andre Opina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:09:03