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

React组件+TypeScript中dispatch触发类型错误问题及解决

Redux Toolkit异步Action调用的TypeScript类型错误问题

问题现象

在React组件的handleSubmit方法中调用dispatch(createNote(data))时触发类型错误,但忽略该错误提交表单后,数据仍可正常保存至IndexedDB。

错误信息

Argument of type '(dispatch: Dispatch) => void' is not assignable to parameter of type 'AnyAction'
(alias) createNote(data: Note): (dispatch: Dispatch) => void
import createNote

相关代码

createNote的两种写法(均未解决问题):

export const createNote = (data: Note) => (dispatch: any) => {
     console.log(data);
     dispatch(createNoteReq());

     try {
         addNote(data);
         dispatch(noteCreate(data));
     } catch (error: any) {
         dispatch(notesReqFailed(error.message));
     }
};
export const createNote = (data: Note) => (dispatch: Dispatch<AnyAction>) => {
     console.log(data);
     dispatch(createNoteReq());

     try {
         addNote(data);
         dispatch(noteCreate(data));
     } catch (error: any) {
         dispatch(notesReqFailed(error.message));
     }
};

解决方案

使用Redux Toolkit提供的类型化钩子:自定义useAppDispatch替代原生useDispatch,useAppSelector替代原生useSelector,具体可参考Redux Toolkit TypeScript文档中「定义类型化钩子」的章节。

内容的提问来源于stack exchange,提问作者Денис Матерн

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:16:26