我希望这个周末每个人都做得很好!
免责声明:我已经研究了一整天,只有在尝试了很多东西之后才来寻求帮助,我打开了 20 多个 StackOverflow 链接并阅读了它们......
我有这个自定义的 redux 中间件,用于捕获失败的承诺并为每个承诺分派一个动作。
const errorMiddleware: Middleware =
({ dispatch }: MiddlewareAPI) =>
(next: Dispatch) =>
async (action: AnyAction) => {
const { meta, payload } = action;
const { withErrorHandler, defaultErrorCode } = meta;
const isPromise = getIsPromise(payload);
if (isPromise && withErrorHandler) {
return next(action)
.catch(errorHandler(defaultErrorCode))
.catch((handledError: ISystemError) =>
Promise.reject(
handledError.shouldSkipHandleError
? handledError
: dispatch(addError(handledError))
)
);
}
return next(action);
};
我要解决的问题是async (action: AnyAction) => {
我收到一条错误消息说
Argument of type 'AsyncThunkAction<number, number, {}>' is not assignable to parameter of type 'AnyAction'.
Property 'type' is missing in type 'AsyncThunkAction<number, number, {}>' but required in type 'AnyAction'. TS2345
53 | <button
54 | className={styles.asyncButton}
> 55 | onClick={() => dispatch(incrementAsync(incrementValue))}
| ^
56 | >
57 | Add Async
58 | </button>
这是因为incrementAsync
使用createAsyncThunk
来自 '@reduxjs/toolkit';
export const incrementAsync = createAsyncThunk(
'counter/fetchCount',
async (amount: number) => {
const response = await fetchCount(amount);
// The value we return becomes the `fulfilled` action payload
return response.data;
}
);
所以我相信我需要将最后一个函数`async(action:AnyAction)=> {`类型的action更改为别的东西,但是我想不通,请问您的话有启发吗?
如果有帮助,这里是打字稿游乐场的链接