2 回答
TA贡献1824条经验 获得超5个赞
我做了一些更新,并包含了我正在做的事情的一个例子。
看起来你需要
connect
从react-redux
addProduct
既然你已经映射了它,你需要从你的道具中解构mapDispatchToProps
我重新定义
mapDispatchToProps
为不使用bindActionCreators
,这只是一个偏好问题,但两者都应该有效。在您的 中
connect()
,我通过使用...rest
并将其传播到返回的道具中来解构所有剩余的道具。
..
家长
import React from "react"
import ProductListItem from "./ProductListItem"
const products = [1,2,3] <-- data might be in redux-state but I'll use this for simplicity.
const TestHolder = () => {
return(
<div>
<ProductListItem products={products}/>
</div>
)
}
export default TestHolder
产品列表项
import React from "react"
import { connect } from "react-redux"
import { addProduct } from "../../actions/testActions";
const ProductListItem = ({ product, addProduct }) => {
return (
<div className="product">
<button className="add_card" onClick={() => addProduct()}>
{" "}
add to cart
</button>
</div>
);
};
const mapDispatchToProps = dispatch => {
return {
addProduct: (product) => {
dispatch(addProduct(product))
}
}
};
export default connect(null, mapDispatchToProps)(({ products = [], ...rest }) =>
products.map((product, i) => {
return <ProductListItem key={i} product={product} {...rest} />;
}))
动作创建者
export const addProduct = () => {
return {
type: "Woof"
}
}
您可能已经对 action-creator 进行了格式错误并使其成为普通对象而不是返回对象的函数。
添加回答
举报