reactjs - TypeError:this.props.decrementCount 不是函数
问题描述
我正在尝试制作一个简单的购物车柜台,但收到此错误。我很困惑 mapStateToDispatch 是否有效。导入所有模块,功能正常,但当我点击添加,删除按钮时只得到这个错误
import React,{Component} from 'react';
import './cart.css';
import {product,product1} from './product.js'
import 'bootstrap/dist/css/bootstrap.min.css';
import {incrementCount , decrementCount} from './actions/buttonBehave';
import {connect} from 'react-redux';
import { bindActionCreators } from 'redux'
export class Cart extends Component{
state = {
buttonClicked : false
}
handleButton= () =>{
this.setState({
buttonClicked : true
})
}
render()
{
return(
<div className="cardDiv">
<div className="card" >
<img className="card-img-top" src={product.image} alt="Card image" height="350px" />
<div className="card-body">
<h4 className="card-title">{product.name}</h4>
<p className="card-text">Model : {product.modelName}</p>
<p className="card-text">Price : {product.price}</p>
<a href="#" className="btn btn-primary " onClick={this.handleButton.bind(this)}> {this.state.buttonClicked ? "Add another" : "Add to cart"} </a>
<p className="card-text">Added : {this.props.count}</p>
<button onClick = { () => this.props.incrementCount ()}>Remove</button>
<button onClick = { () => this.props.decrementCount()}>ADD</button>
<p className="card-text">{this.props.count}</p>
</div>
</div>
</div>
);
}
}
const mapStateToProps= (state) =>{
return{
count : state.count
}
}
const mapDispatchToProps = () => {
return {
incrementCount,
decrementCount
}
}
export default connect(mapStateToProps,mapDispatchToProps())(Cart);
解决方案
您正在调用该函数而不是传递它的引用
export default connect(mapStateToProps,mapDispatchToProps())(Cart);
// ------------------------------------------------------^^--------
改成这个
export default connect(mapStateToProps, mapDispatchToProps)(Cart);
另一种选择是根本不使用mapDispatchToProps
并使用您连接的组件接收的调度
export default connect(mapStateToProps)(Cart);
然后使用调度
this.props.dispatch(decrementCount())
推荐阅读
- bash - 如何在非交互式 bash 脚本及其 git 子程序中禁用 ctrl-c
- javascript - 通过帖子发送文本时如何不丢失换行符
- javascript - 在 document.write() 中调用 JavaScript 函数
- css - 使用 SASS 返回 Bootstrap 列宽
- java - 如果我们在重新散列发生时放置一个元素,HashMap 会发生什么?
- javascript - React Antd 无法从自定义日期选择器中获取价值
- java - 在 Java 中复制后,Arrays.sort 似乎正在更改我的复制数组。为什么会发生这种情况?
- css-animations - 关键帧和动画在 Next js 中根本不起作用
- django - 覆盖restauth密码重置电子邮件问题
- android - 如何打开SAF(Storage Access Framework)来选择存储?