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

React-Redux开发计数器触发TypeError:DEC_NUM不是函数问题求助

报错根因

该错误由ES模块的导出、导入语法不匹配导致:

  • 你在Action/index.js中使用export default导出了一个包含INC_NUM、DEC_NUM两个方法的对象
  • 但在App.js中使用了import { INC_NUM, DEC_NUM } from "./Action/index"的命名导入语法,该语法只会读取模块的命名导出项,无法读取默认导出对象上的属性
  • 最终导入的DEC_NUM实际为undefined,调用时就会触发「不是函数」的报错
修复方案

以下两种方案二选一即可:

方案1:修改Action模块的导出语法(推荐)

将Action/index.js的默认导出改为命名导出,不需要改动其他文件的导入逻辑:

// Action/index.js 修改后代码
export const INC_NUM = () => {
 return {
  type: "INC_NUMBER"
 };
};

export const DEC_NUM = () => {
 return {
  type: "DEC_NUMBER"
 };
};
// 删除原来的 export default { INC_NUM, DEC_NUM } 代码

方案2:修改App.js的导入语法

如果不改动Action模块的导出逻辑,把App.js的导入逻辑改为匹配默认导出即可:

// App.js 修改后导入代码
import ActionObj from "./Action/index";
const { INC_NUM, DEC_NUM } = ActionObj;
额外优化提示

你当前的counterReducer只打印了日志,没有返回新的状态值,计数器不会正常更新,可按如下逻辑修改:

const counterReducer = (state = 1, action) => {
 if (action.type === "INC_NUMBER") {
  return state + 1;
 } else if (action.type === "DEC_NUMBER") {
  return state - 1;
 }
 return state;
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:45:02