我需要记录RTK-Query发出的所有API调用
我知道我们可以使用redux-logger来记录所有状态更改到控制台用于开发目的。但我需要记录RTK查询所做的所有状态更改/ API调用。
我看到RTK Query在引擎盖下使用了fetch,所以不能使用拦截器来完成这项工作。我也不想用axios库来取代fetch来引入拦截器。
另一个我不打算使用的选项是覆盖windows的console.log来记录服务器端点。
我看到有类似的东西提供的日志火箭,但我不想船上的太...
我有什么选择?
import logger from 'redux-logger'
import { rootReducer } from 'src/reducers/rootReducer';
const otherMiddlewares: any[] = [];
if (process.env.NODE_ENV === `development`) {
otherMiddlewares.push(logger);
}
export const store = configureStore({
reducer: rootReducer,
devTools: process.env.NODE_ENV !== 'production',
// The API slice generates a custom middleware which manages cache lifetimes and expiration
middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(otherMiddlewares)
});
export type AppDispatch = typeof store.dispatch;
export type RootState = ReturnType<typeof store.getState>;
3条答案
按热度按时间omvjsjqw1#
我能想到的一种记录所有Redux更改的方法是编写一个用于自定义日志记录的中间件
2lpgd9682#
为了在不替换fetch或使用LogRocket等外部库的情况下记录RTK Query进行的所有API调用,您可以创建一个侦听RTK Query操作的自定义中间件。
以下是如何创建用于记录RTK查询API调用的自定义中间件:
创建自定义中间件函数:
此中间件检查操作类型是否以'API/'开头(假设您的apiSlice命名为'api')并以'/pending'、'/fulfilled'或'/rejected'结尾,表明它是RTK Query API调用。如果是,则记录操作类型和操作对象。
将中间件添加到您的商店配置:
现在,每当使用RTK查询进行API调用时,自定义中间件都会将API调用操作记录到控制台。如果需要,您可以进一步自定义日志记录。
gywdnpxw3#
在RTK Query中,你不会像axios那样使用拦截器,但你会 Package
baseQuery
函数: