Reactjs React/Redux:Uncaught TypeError:\u this2.props.AddToCart不是函数。。我一直在犯这个错误,但我不知道';我不知道是什么';这是不对的

Reactjs React/Redux:Uncaught TypeError:\u this2.props.AddToCart不是函数。。我一直在犯这个错误,但我不知道';我不知道是什么';这是不对的,reactjs,redux,Reactjs,Redux,我只是试图在触发onclick处理程序时,对列表中的每个项目调用AddToCart,这只会将项目的数量减少1个单位。以下是相关代码: import React, { Component } from 'react'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import { AddToCart } from '../actions/add_to_cart'; class

我只是试图在触发onclick处理程序时,对列表中的每个项目调用AddToCart,这只会将项目的数量减少1个单位。以下是相关代码:

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { AddToCart } from '../actions/add_to_cart';

class ItemList extends Component {


  render() {
    return (
      <div>
        <ol>
          {this.props.itemList.map((item) =>
          <li key={item.id} >
            name: {item.name} ||
            price: ${item.price} ||
            Quantity: {item.quantity}
            <button
              onClick={() => this.props.AddToCart(item.id)}
              >Add To Cart
            </button>
          </li>
        )}
        </ol>
      </div>
    );
  }
}


function mapDispatchToProps (dispatch) {
  return bindActionCreators({ AddToCart }, dispatch);
}

function mapStateToProps(state) {
  return { itemList: state.itemList }
} 

export default connect(mapStateToProps,mapDispatchToProps)(ItemList);
这是减速器:

import { ADD_TO_LIST } from '../actions/add_to_list';
import { ADD_TO_CART } from '../actions/add_to_cart';



export default function (state = [], action) {
  console.log('action recieved', action);
  switch (action.type) {
    case ADD_TO_LIST:
      console.log(state)
      return [
        ...state,
        { id: action.id, name: action.name, price: action.price, quantity: 10 }
  ]
    case ADD_TO_CART:
      return state.map((item) => {
        if(item.id === action.id){
          // return {...state, quantity: 0}
          return Object.assign({}, item, {quantity: item.quantity - 1})
        }
        return item
      })
    }
  return state;
  console.log(state);
}

我在这件事上停留的时间比我想分享的要长。请帮忙

您正在导入AddToCart:

import { AddToCart } from '../actions/add_to_cart';
但在动作创建者中,函数的名称是addToCart。它必须是:

import { addToCart } from '../actions/add_to_cart';

您正在导入AddToCart:

import { AddToCart } from '../actions/add_to_cart';
但在动作创建者中,函数的名称是addToCart。它必须是:

import { addToCart } from '../actions/add_to_cart';

应该是
onClick={AddToCart.AddToCart}
您的导入不正确。您正在操作创建者中导出名为
addToCart
的函数,但试图在组件中导入名为
addToCart
的函数。很容易混淆,eslint有一个插件可以为您捕捉到这一点。它在以下问题中进行了描述:它应该是
onClick={AddToCart.AddToCart}
您的导入不正确。您正在操作创建者中导出名为
addToCart
的函数,但试图在组件中导入名为
addToCart
的函数。很容易混淆,eslint有一个插件可以为您捕捉到这一点。下一期中对其进行了描述: