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

React.js useReducer钩子调用报错:无匹配重载及dispatch参数异常

问题原因及修复

你的代码里存在两处关键的类型不匹配问题,导致TypeScript抛出错误:

1. 初始状态与State类型定义不匹配

你定义的CounterState类型指定了键为count:

type CounterState = {
  count: number;
};

但实际初始化的状态对象用了counter作为键:

const initialState = { counter: 0 };

键名不一致直接导致TypeScript无法正确关联reducer的输入输出类型。

2. Reducer返回值类型矛盾

在reducer的reset分支中,你返回了initialState(键为counter的对象),但其他分支返回的是符合CounterState类型、键为count的对象。这种返回值类型的不一致,让TypeScript错误推断了useReducer的类型,将dispatch判定为不需要参数的DispatchWithoutAction,所以调用dispatch传参时会提示“Expected 0 arguments”。

快速修复

将initialState的键名改为count,与CounterState类型保持统一:

const initialState = { count: 0 };

修改后,reducer所有分支的返回值都会符合CounterState类型,TypeScript就能正确推断useReducer的类型,dispatch也可以正常接收CounterAction类型的参数了。

内容的提问来源于stack exchange,提问作者marc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:36:24