Y M*_*Y M 5 redux redux-thunk react-redux redux-toolkit rtk-query
我使用RTKQuery来获取数据,如下所示:
export const productsApi = createApi({
reducerPath: 'productsApi',
baseQuery: fetchBaseQuery({
baseUrl: BASE_URL,
prepareHeaders,
}),
tagTypes: ['Products'],
keepUnusedDataFor: 8600,
endpoints: builder => ({
getProperties: builder.query<IProduct[], IParams>({
query: params => ({ url: 'products', params: { per_page: 40, ...params } }),
transformResponse: ({ data }: { data: IProduct[] }) => data,
providesTags: ['Products'],
}),
});
Run Code Online (Sandbox Code Playgroud)
我对 Redux Toolkit 比较陌生,在使用任何 Redux 之前直接开始使用它。从 ReduxToolkit 文档中,我找到了两种在后端捕获和放置操作的方法。
我尝试使用中间件方法使用如下代码:
export const rtkQueryErrorLogger: Middleware = (api: MiddlewareAPI) => next => action => {
if (isRejected(action)) {
console.log(action);
}
return next(action);
}
Run Code Online (Sandbox Code Playgroud)
但这并不能捕获 40x/50x 错误。应该用什么方法来处理这个问题?
目的是在使用元信息捕获这些错误后将日志发送到服务器。我正在关注:https://redux-toolkit.js.org/rtk-query/usage/error-handling#handling-errors-at-a-macro-level作为参考。
小智 1
一年多后,我正在研究这个问题。我认为中间件方法是好的,但你也可以使用自定义的方法baseQuery。您的具体情况似乎还有其他需要调试的事情,但您没有为此提供足够的信息。
我认为 RTKQuery 的文档是错误的:isRejected是一个需要 thunk 作为参数的高阶函数。这也适用于其他匹配器,例如isRejectedWithValue.
我相信,要检查任何被拒绝的操作,您的中间件应该如下所示,即使没有明确记录。
export const rtkQueryErrorLogger: Middleware = (api: MiddlewareAPI) => next => action => {
if (isRejected()(action)) {
console.log(action);
}
return next(action);
}
Run Code Online (Sandbox Code Playgroud)
当然还要记住将中间件添加到商店创建者中。
另请参阅官方文档https://redux-toolkit.js.org/api/matching-utilities#isrejected
被拒绝
一个高阶函数,返回一个类型保护函数,可用于检查某个操作是否是 createAsyncThunk Promise 生命周期中“被拒绝”的操作创建者。
被拒绝使用
Run Code Online (Sandbox Code Playgroud)import { isRejected } from '@reduxjs/toolkit' import type { AnyAction } from '@reduxjs/toolkit' import { requestThunk1, requestThunk2 } from '@virtual/matchers' const isARejectedAction = isRejected(requestThunk1, requestThunk2) function handleRejectedAction(action: AnyAction) { if (isARejectedAction(action)) { // action is a rejected action dispatched by either `requestThunk1` or `requestThunk2` } }
| 归档时间: |
|
| 查看次数: |
3429 次 |
| 最近记录: |