Reactjs React/Redux:Uncaught TypeError:\u this2.props.AddToCart不是函数。。我一直在犯这个错误,但我不知道';我不知道是什么';这是不对的
我只是试图在触发onclick处理程序时,对列表中的每个项目调用AddToCart,这只会将项目的数量减少1个单位。以下是相关代码: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
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有一个插件可以为您捕捉到这一点。下一期中对其进行了描述: