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

React/Redux报错:Uncaught TypeError: _this2.props.AddToCart不是函数

解决React/Redux中AddToCart is not a function的错误

看起来你在把Redux action绑定到组件props的时候出了点小问题,我帮你梳理几个最可能的原因和解决办法:

1. 确认connect方法正确绑定了action creator

你用到了bindActionCreators,但要确保它被正确传递给connect的第二个参数(mapDispatchToProps)。如果你的代码里connect只传了第一个参数(mapStateToProps),那组件props里根本不会有AddToCart方法。

正确的写法有两种:

方式一:显式使用bindActionCreators

const mapStateToProps = (state) => {
  return {
    itemList: state.items
  };
};

const mapDispatchToProps = (dispatch) => {
  // 把AddToCart action绑定到dispatch
  return bindActionCreators({ AddToCart }, dispatch);
};

// 一定要把mapDispatchToProps传给connect的第二个参数
export default connect(mapStateToProps, mapDispatchToProps)(ItemList);

方式二:直接传递action对象(更简洁)

Redux的connect方法支持直接把action creator对象作为第二个参数,它会自动帮你绑定dispatch:

// 省略mapStateToProps的话,第一个参数传null
export default connect(mapStateToProps, { AddToCart })(ItemList);

2. 检查action creator的导出与导入是否匹配

你用import { AddToCart } from '../actions/add_to_cart';导入,要确保你的add_to_cart.js里是命名导出这个action creator:

// add_to_cart.js
export const AddToCart = (itemId) => {
  return {
    type: 'ADD_TO_CART',
    payload: itemId
  };
};

如果是默认导出(export default AddToCart),那导入的时候应该去掉花括号:import AddToCart from '../actions/add_to_cart';,否则你导入的会是undefined,自然不是函数。

3. 组件内调用方法时要通过props访问

在渲染列表项的时候,要确保你是调用this.props.AddToCart,而不是直接写AddToCart:

{this.props.itemList.map((item) => (
  <li 
    key={item.id} 
    onClick={() => this.props.AddToCart(item.id)}
  >
    {item.name} - 当前数量: {item.quantity}
  </li>
))}

先检查这几点,应该就能解决AddToCart is not a function的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:29:28